From 52ead086d9ad9baf0356c031b0075dc944d2b957 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 13 Apr 2021 11:30:51 +0300 Subject: [PATCH] rtpjitterbuffer: Check srcresult before waiting on the condition variable too It might've been set to FLUSHING between the last check and the waiting, and in that case we'd be waiting here forever now. Part-of: --- gst/rtpmanager/gstrtpjitterbuffer.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 7f677f0..6f7185c 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -234,6 +234,8 @@ enum } G_STMT_END #define JBUF_WAIT_EVENT(priv,label) G_STMT_START { \ + if (G_UNLIKELY (priv->srcresult != GST_FLOW_OK)) \ + goto label; \ GST_DEBUG ("waiting event"); \ (priv)->waiting_event = TRUE; \ g_cond_wait (&(priv)->jbuf_event, &(priv)->jbuf_lock); \ @@ -250,6 +252,8 @@ enum } G_STMT_END #define JBUF_WAIT_QUERY(priv,label) G_STMT_START { \ + if (G_UNLIKELY (priv->srcresult != GST_FLOW_OK)) \ + goto label; \ GST_DEBUG ("waiting query"); \ (priv)->waiting_query = TRUE; \ g_cond_wait (&(priv)->jbuf_query, &(priv)->jbuf_lock); \ -- 2.7.4