multiqueue: Wake up any waiting streams if the current one goes EOS
authorAndrei Sarakeev <sarakusha@gmail.com>
Thu, 16 Oct 2014 06:13:14 +0000 (10:13 +0400)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 20 Oct 2014 10:31:42 +0000 (12:31 +0200)
Otherwise we might have unlinked streams waiting.

https://bugzilla.gnome.org/show_bug.cgi?id=738198

plugins/elements/gstmultiqueue.c

index ccab3e3..61d6773 100644 (file)
@@ -1541,6 +1541,14 @@ gst_multi_queue_loop (GstPad * pad)
   GST_LOG_OBJECT (mq, "AFTER PUSHING sq->srcresult: %s",
       gst_flow_get_name (sq->srcresult));
 
+  GST_MULTI_QUEUE_MUTEX_LOCK (mq);
+  if (mq->numwaiting > 0 && sq->srcresult == GST_FLOW_EOS) {
+    compute_high_time (mq);
+    compute_high_id (mq);
+    wake_up_next_non_linked (mq);
+  }
+  GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
+
   return;
 
 out_flushing: