multiqueue: start pushing again on RECONFIGURE
authorWim Taymans <wim.taymans@collabora.co.uk>
Thu, 4 Apr 2013 17:16:23 +0000 (19:16 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 4 Apr 2013 17:16:23 +0000 (19:16 +0200)
When we got NOT_LINKED before and we receive a RECONFIGURE event, start pushing
again on the source pad.

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

plugins/elements/gstmultiqueue.c

index 90f452e..e22b6d0 100644 (file)
@@ -1657,8 +1657,24 @@ static gboolean
 gst_multi_queue_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
 {
   GstSingleQueue *sq = gst_pad_get_element_private (pad);
+  GstMultiQueue *mq = sq->mqueue;
+  gboolean ret;
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_RECONFIGURE:
+      GST_MULTI_QUEUE_MUTEX_LOCK (mq);
+      if (sq->srcresult == GST_FLOW_NOT_LINKED)
+        sq->srcresult = GST_FLOW_OK;
+      GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
+
+      ret = gst_pad_push_event (sq->sinkpad, event);
+      break;
+    default:
+      ret = gst_pad_push_event (sq->sinkpad, event);
+      break;
+  }
 
-  return gst_pad_push_event (sq->sinkpad, event);
+  return ret;
 }
 
 static gboolean