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: