summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorArun Raghavan <arun@asymptotic.io>2020-10-26 11:45:27 -0400
committerArun Raghavan <arun@asymptotic.io>2020-10-26 12:00:35 -0400
commita9c6d43b7ca3ffceab31bc3819903ee8c5de70c5 (patch)
tree755b668dd586ce6b1df51652c93386ab38eedbf5 /src
parent1d6bd6689f1c8292385a86acd927716fb4e87414 (diff)
downloadpulseaudio-a9c6d43b7ca3ffceab31bc3819903ee8c5de70c5.tar.gz
sink, source: Skip filter streams while changing default sink/source
Streams connecting filter devices to their target devices shouldn't move because of default settings (they are intended to be filtering the specific device that are attached to). Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1015
Diffstat (limited to 'src')
-rw-r--r--src/pulsecore/sink.c4
-rw-r--r--src/pulsecore/source.c4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 56a3ce433..e89b59655 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -3973,6 +3973,10 @@ void pa_sink_move_streams_to_default_sink(pa_core *core, pa_sink *old_sink, bool
if (!i->sink)
continue;
+ /* Don't move sink-inputs which connect filter sinks to their target sinks */
+ if (i->origin_sink)
+ continue;
+
/* If default_sink_changed is false, the old sink became unavailable, so all streams must be moved. */
if (pa_safe_streq(old_sink->name, i->preferred_sink) && default_sink_changed)
continue;
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 705c93906..efc364083 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -3029,6 +3029,10 @@ void pa_source_move_streams_to_default_source(pa_core *core, pa_source *old_sour
if (!o->source)
continue;
+ /* Don't move source-outputs which connect sources to filter sources */
+ if (o->destination_source)
+ continue;
+
/* If default_source_changed is false, the old source became unavailable, so all streams must be moved. */
if (pa_safe_streq(old_source->name, o->preferred_source) && default_source_changed)
continue;