[gst-cvs] gst-plugins-bad: input-selector: Forward segment events for the active pad immediately.
Jan Schmidt
thaytan at kemper.freedesktop.org
Thu Apr 23 03:09:53 PDT 2009
Module: gst-plugins-bad
Branch: master
Commit: 5307933825f54d3d1b92bcb1bcfb5142ca359263
URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=5307933825f54d3d1b92bcb1bcfb5142ca359263
Author: Jan Schmidt <thaytan at noraisin.net>
Date: Thu Apr 23 11:04:46 2009 +0100
input-selector: Forward segment events for the active pad immediately.
When a segment event is received on the active pad, forward it downstream
immediately instead of deferring it until the next data buffer arrives. This
fixes problems with segment updates never being sent downstream, like those
needed for sparse streams, or for closing previously opened segments.
This fixes playback of DVD menus with a still video frame and an audio track,
for example.
Fixes: #577843
---
gst/selector/gstinputselector.c | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/gst/selector/gstinputselector.c b/gst/selector/gstinputselector.c
index 7a458b0..08d3d49 100644
--- a/gst/selector/gstinputselector.c
+++ b/gst/selector/gstinputselector.c
@@ -392,12 +392,17 @@ gst_selector_pad_event (GstPad * pad, GstEvent * event)
gst_segment_set_newsegment_full (&selpad->segment, update,
rate, arate, format, start, stop, time);
GST_OBJECT_UNLOCK (selpad);
- /* we are not going to forward the segment, mark the segment as
- * pending */
- forward = FALSE;
- selpad->segment_pending = TRUE;
- GST_INPUT_SELECTOR_UNLOCK (sel);
+ /* If we aren't forwarding the event (because the pad is not the
+ * active_sinkpad, and select_all is not set, then set the flag on the
+ * that says a segment needs sending if/when that pad is activated.
+ * For all other cases, we send the event immediately, which makes
+ * sparse streams and other segment updates work correctly downstream.
+ */
+ if (!forward)
+ selpad->segment_pending = TRUE;
+
+ GST_INPUT_SELECTOR_UNLOCK (sel);
break;
}
case GST_EVENT_TAG:
More information about the Gstreamer-commits
mailing list