decklinksrc: push new new segment event to all pads
authorblake tregre <blake@oblong.com>
Sun, 12 Feb 2012 06:49:10 +0000 (22:49 -0800)
committerDavid Schleef <ds@schleef.org>
Sat, 17 Mar 2012 21:24:51 +0000 (14:24 -0700)
Take care to push the event to all pads, but favor the video src pad.
Fixes: #667716.

sys/decklink/gstdecklinksrc.cpp

index b2d67f0..37fd59a 100644 (file)
@@ -1300,11 +1300,28 @@ gst_decklink_src_task (void *priv)
     event = gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME, 0,
         GST_CLOCK_TIME_NONE, 0);
 
-    ret = gst_pad_push_event (decklinksrc->videosrcpad, event);
-    if (!ret) {
-      GST_ERROR_OBJECT (decklinksrc, "new segment event ret=%d", ret);
-      return;
+    if (gst_pad_is_linked (decklinksrc->videosrcpad)) {
+      gst_event_ref (event);
+      ret = gst_pad_push_event (decklinksrc->videosrcpad, event);
+      if (!ret) {
+        GST_ERROR_OBJECT (decklinksrc, "new segment event ret=%d", ret);
+        gst_event_unref (event);
+        return;
+      }
+    } else {
+      gst_event_unref (event);
     }
+
+    if (gst_pad_is_linked (decklinksrc->audiosrcpad)) {
+      ret = gst_pad_push_event (decklinksrc->audiosrcpad, event);
+      if (!ret) {
+        GST_ERROR_OBJECT (decklinksrc, "new segment event ret=%d", ret);
+        gst_event_unref (event);
+      }
+    } else {
+      gst_event_unref (event);
+    }
+
   }
 
   if (decklinksrc->video_caps == NULL) {