Greetings everyone! I am having some problems with corking: pulseaudio policy enforcer will cork all the streams which belongs to a corked group. However, despite the fact corking itself happens correctly (via pa_sink_input_cork() at pulseaudio-policy-enforcement:src/policy-group.c) the stream will not end up being corked, instead it will be set to PA_SINK_RUNNING. After some tracing, it seems that it happens because of sink_set_state() is called from pa_sink_suspend() (at pulseaudio:src/pulsecore/sink.c) right after the corking. The end of the function is: if (s->suspend_cause) return sink_set_state(s, PA_SINK_SUSPENDED); else return sink_set_state(s, pa_sink_used_by(s) ? PA_SINK_RUNNING : PA_SINK_IDLE); } Should it be something like: if (s->suspend_cause) return sink_set_state(s, PA_SINK_SUSPENDED); else if (s->state != PA_SINK_INPUT_CORKED) return sink_set_state(s, pa_sink_used_by(s) ? PA_SINK_RUNNING : PA_SINK_IDLE); else return 0; } ...to take corking into account? This fix proposal is also attached to this e-mail as a patch. Best regards, Ville Sundell -------------- next part -------------- A non-text attachment was scrubbed... Name: pa_sink_suspend_can_now_handle_corked_streams.patch Type: text/x-patch Size: 840 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20141105/c8b4e962/attachment.bin>