ladspa-sink: do not call pa_sink_suspend if PA_SINK_IS_LINKED is false
authorIgor V. Kovalenko <igor.v.kovalenko@gmail.com>
Sun, 27 Dec 2020 12:25:40 +0000 (15:25 +0300)
committerPulseAudio Marge Bot <pulseaudio-maintainers@lists.freedesktop.org>
Mon, 4 Jan 2021 12:19:07 +0000 (12:19 +0000)
While module-ladspa-sink is still being loaded and before pa_sink_put() is
called there may be an attempt to reconfigure master sink when avoid-resampling
is true. This breaks attempting to suspend ladspa-sink which is still in INIT
state.

Fix this by skipping pa_sink_suspend if PA_SINK_IS_LINKED is false.

Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/445>

src/modules/module-ladspa-sink.c

index f4fed6d..5726d08 100644 (file)
@@ -714,6 +714,9 @@ static void sink_input_suspend_cb(pa_sink_input *i, pa_sink_state_t old_state, p
     pa_sink_input_assert_ref(i);
     pa_assert_se(u = i->userdata);
 
+    if (!PA_SINK_IS_LINKED(u->sink->state))
+        return;
+
     if (i->sink->state != PA_SINK_SUSPENDED || i->sink->suspend_cause == PA_SUSPEND_IDLE)
         pa_sink_suspend(u->sink, false, PA_SUSPEND_UNAVAILABLE);
     else