From 9b2ff82aea27500487d7a6d46f7e28805468eff7 Mon Sep 17 00:00:00 2001 From: Elliot Chen Date: Fri, 26 Jun 2026 17:41:13 +0900 Subject: [PATCH] pipewiresrc: unlock loop when failing to wait negotiated --- src/gst/gstpipewiresrc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gst/gstpipewiresrc.c b/src/gst/gstpipewiresrc.c index 3c57028b4..efcca816b 100644 --- a/src/gst/gstpipewiresrc.c +++ b/src/gst/gstpipewiresrc.c @@ -1786,8 +1786,11 @@ gst_pipewire_src_change_state (GstElement * element, GstStateChange transition) * be moved from idle to suspended, which would mean format cleared via * handle_format_change. Wait for new format to avoid basesrc calling * create() and get not-negotiated error as response. */ - if (wait_negotiated(this) == PW_STREAM_STATE_ERROR) + if (wait_negotiated(this) == PW_STREAM_STATE_ERROR) { + pw_thread_loop_unlock (this->stream->core->loop); goto open_failed; + } + pw_thread_loop_unlock (this->stream->core->loop); break; case GST_STATE_CHANGE_PLAYING_TO_PAUSED: