From b40599f6db3ed12db57b7acfdaa23e2f5d7a629a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 19 Aug 2013 16:38:50 +0200 Subject: [PATCH] multiqueue: Clean up after the streaming thread has stopped https://bugzilla.gnome.org/show_bug.cgi?id=705835 --- plugins/elements/gstmultiqueue.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c index 7a9cd5f..a83220d 100644 --- a/plugins/elements/gstmultiqueue.c +++ b/plugins/elements/gstmultiqueue.c @@ -1474,7 +1474,19 @@ gst_multi_queue_sink_activate_mode (GstPad * pad, GstObject * parent, sq->last_query = FALSE; g_cond_signal (&sq->query_handled); gst_data_queue_set_flushing (sq->queue, TRUE); + + /* Wait until streaming thread has finished */ + if (mq) + GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); + GST_PAD_STREAM_LOCK (pad); + if (mq) + GST_MULTI_QUEUE_MUTEX_LOCK (mq); gst_data_queue_flush (sq->queue); + if (mq) + GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); + GST_PAD_STREAM_UNLOCK (pad); + if (mq) + GST_MULTI_QUEUE_MUTEX_LOCK (mq); } res = TRUE; break; -- 2.7.4