On Tue, 2017-05-16 at 15:14 +0200, Georg Chini wrote:
> When a filter is loaded and module-switch-on-connect is present, 
> switch-on-connect
> will make the filter the default sink or source and move streams from the old
> default to the filter. This is done from the sink/source put hook, therefore 
> streams
> are moved to the filter before the module init function of the filter calls
> sink_input_put() or source_output_put(). The move succeeds because the 
> asyncmsq
> already points to the queue of the master sink or source. When the master 
> sink or
> source is attached to the sink input or source output, the attach callback 
> will call
> pa_{sink,source}_attach_within_thread(). These functions assume that all 
> streams
> are detached. Because streams were already moved to the filter by 
> switch-on-connect,
> this assumption leads to an assertion in 
> pa_{sink_input,source_output}_attach().
> 
> This patch fixes the problem by reverting the order of the 
> pa_{sink,source}_put()
> calls and the pa_{sink_input,source_output}_put calls and creating the sink 
> input
> or source output corked. The initial rewind that is done for the master sink 
> is
> moved to the sink message handler. The order of the unlink calls is swapped 
> as well
> to prevent that the filter appears to be moving during module unload.
> 
> The patch also seems to improve user experience, the move of a stream to the 
> filter
> sink is now done without any audible interruption on my system.
> 
> The patch is only tested for module-echo-cancel.
> 
> Bug-Link: https://bugs.freedesktop.org/show_bug.cgi?id=100065
> ---
>  src/modules/echo-cancel/module-echo-cancel.c | 92 
> ++++++++++++++++++++--------
>  src/modules/module-equalizer-sink.c          | 64 +++++++++++--------
>  src/modules/module-ladspa-sink.c             | 64 +++++++++++--------
>  src/modules/module-remap-sink.c              | 65 ++++++++++++--------
>  src/modules/module-remap-source.c            | 36 +++++++----
>  src/modules/module-virtual-sink.c            | 64 +++++++++++--------
>  src/modules/module-virtual-source.c          | 35 ++++++++---
>  src/modules/module-virtual-surround-sink.c   | 64 +++++++++++--------
>  8 files changed, 306 insertions(+), 178 deletions(-)

Looks good to me.

-- 
Tanu

https://www.patreon.com/tanuk
_______________________________________________
pulseaudio-discuss mailing list
pulseaudio-discuss@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to