From: Sebastian Dröge Date: Mon, 9 Mar 2020 18:27:58 +0000 (+0200) Subject: identity: Unblock condition variable on FLUSH_START X-Git-Tag: 1.19.3~980 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c7ddc5eb7976a207d6f07aef52f39a430030aed4;p=platform%2Fupstream%2Fgstreamer.git identity: Unblock condition variable on FLUSH_START ... and immediately return FLUSHING from the streaming thread instead of waiting potentially forever. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/516 --- diff --git a/plugins/elements/gstidentity.c b/plugins/elements/gstidentity.c index 319f4e3..0c5f468 100644 --- a/plugins/elements/gstidentity.c +++ b/plugins/elements/gstidentity.c @@ -333,7 +333,7 @@ gst_identity_do_sync (GstIdentity * identity, GstClockTime running_time) return GST_FLOW_FLUSHING; } - while (identity->blocked) + while (identity->blocked && !identity->flushing) g_cond_wait (&identity->blocked_cond, GST_OBJECT_GET_LOCK (identity)); if (identity->flushing) { @@ -463,6 +463,7 @@ gst_identity_sink_event (GstBaseTransform * trans, GstEvent * event) if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_START) { GST_OBJECT_LOCK (identity); identity->flushing = TRUE; + g_cond_broadcast (&identity->blocked_cond); if (identity->clock_id) { GST_DEBUG_OBJECT (identity, "unlock clock wait"); gst_clock_id_unschedule (identity->clock_id);