sink: don't sync monitor suspend state when unlinking
authorTanu Kaskinen <tanuk@iki.fi>
Thu, 22 Feb 2018 08:06:59 +0000 (10:06 +0200)
committerTanu Kaskinen <tanuk@iki.fi>
Thu, 22 Feb 2018 08:55:44 +0000 (10:55 +0200)
When the sink is unlinked, there's no need to update the monitor suspend
state. In fact, trying to do that causes an assertion failure, because
pa_source_sync_suspend() wasn't written to handle the case where the
sink is unlinked.

src/pulsecore/sink.c

index 0dfc91c..f19e8b0 100644 (file)
@@ -481,7 +481,7 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t
     }
 
 finish:
-    if ((suspending || resuming || suspend_cause_changed) && s->monitor_source)
+    if ((suspending || resuming || suspend_cause_changed) && s->monitor_source && state != PA_SINK_UNLINKED)
         pa_source_sync_suspend(s->monitor_source);
 
     return ret;