summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTanu Kaskinen <tanuk@iki.fi>2017-08-30 21:51:15 +0300
committerTanu Kaskinen <tanuk@iki.fi>2017-09-02 14:14:49 +0300
commit970b475a255b6d98258e9a2b067de9bdc14e7337 (patch)
tree6f7f395241bf5537b4e325ce8b93e7beb0a07323
parent6921e08f605bbe7c1e2c2fc1afe35c1202239627 (diff)
downloadpulseaudio-970b475a255b6d98258e9a2b067de9bdc14e7337.tar.gz
core: ignore devices that are not linked when choosing the default sink or source
Sources should probably be added to pa_core.sources in pa_source_put(), but currently they're added in pa_source_new(). A lot of stuff can happen between the pa_source_new() and pa_source_put() calls, and it has happened that the default source was updated during this time. Therefore, pa_core_update_default_source() needs to take it into account that not every source is necessarily linked.
-rw-r--r--src/pulsecore/core.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index e01677d5d..454c56685 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -315,6 +315,9 @@ void pa_core_update_default_sink(pa_core *core) {
pa_assert(core);
PA_IDXSET_FOREACH(sink, core->sinks, idx) {
+ if (!PA_SINK_IS_LINKED(sink->state))
+ continue;
+
if (!best) {
best = sink;
continue;
@@ -399,6 +402,9 @@ void pa_core_update_default_source(pa_core *core) {
pa_assert(core);
PA_IDXSET_FOREACH(source, core->sources, idx) {
+ if (!PA_SOURCE_IS_LINKED(source->state))
+ continue;
+
if (!best) {
best = source;
continue;