This is my second attempt at fixing bug 93443[1]. The first attempt[2] had a nasty side effect of killing streams connected to any filter sink while the filter sink was removed. This second attempt is an entirely different approach. The first patch is the "main" fix, but I think the second patch must be applied together with it, because after implementing the first fix, the result was that module-device-manager went into some infinite stream moving loop that was only stopped by a crash in module-echo-cancel (that crash is a separate issue, which I'll try to fix next). When trying to reproduce the use case of bug 93443, I found that module-device-manager can easily break the filtering set up by module-filter-apply. The third patch fixes that. The last four patches refactor stream proplist updating. The third patch has code that sets a property, and getting the property update logging just the way I want was frustrating, so I changed the core property updating code to take care of the logging. [1] https://bugs.freedesktop.org/show_bug.cgi?id=93443 [2] http://thread.gmane.org/gmane.comp.audio.pulseaudio.general/24735 Tanu Kaskinen (7): echo-cancel: rework move handling don't move streams to devices that are going away device-manager, filter-apply: don't reroute streams that have a filter sink-input, source-output: rework property setting sink-input, source-output: remove set_name() loopback: refactor proplist updating filter-apply: simplify proplist updating src/modules/echo-cancel/module-echo-cancel.c | 28 ++---- src/modules/module-device-manager.c | 14 +++ src/modules/module-filter-apply.c | 11 +- src/modules/module-loopback.c | 28 +++--- src/pulsecore/protocol-native.c | 4 +- src/pulsecore/sink-input.c | 145 +++++++++++++++++++++------ src/pulsecore/sink-input.h | 4 +- src/pulsecore/sink.c | 7 +- src/pulsecore/sink.h | 6 ++ src/pulsecore/source-output.c | 145 +++++++++++++++++++++------ src/pulsecore/source-output.h | 4 +- src/pulsecore/source.c | 5 + src/pulsecore/source.h | 6 ++ 13 files changed, 304 insertions(+), 103 deletions(-) -- 2.7.0