diff options
author | blake tregre <blake@oblong.com> | 2012-02-11 22:49:10 -0800 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2012-03-17 14:24:51 -0700 |
commit | 86eeca91de0cd5143ef23355cd8d4792d13e7b71 (patch) | |
tree | fd63d049d84d0e35afc84d24233cc83fba32720a /sys | |
parent | c13e4eacc247b72721182abae4c9773dcb1896ec (diff) | |
download | gstreamer-plugins-bad-86eeca91de0cd5143ef23355cd8d4792d13e7b71.tar.gz |
decklinksrc: push new new segment event to all pads
Take care to push the event to all pads, but favor the video src pad.
Fixes: #667716.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/decklink/gstdecklinksrc.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/sys/decklink/gstdecklinksrc.cpp b/sys/decklink/gstdecklinksrc.cpp index b2d67f05c..37fd59ae6 100644 --- a/sys/decklink/gstdecklinksrc.cpp +++ b/sys/decklink/gstdecklinksrc.cpp @@ -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) { |