From 462f32dd4a125a7675025800161c08b61fe509de Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sun, 25 Mar 2007 15:33:35 +0000 Subject: [PATCH] libs/gst/base/gstbasesrc.c: Only push the segment events in the PLAYING state for live sources. Original commit message from CVS: * libs/gst/base/gstbasesrc.c: (gst_base_src_get_range), (gst_base_src_loop): Only push the segment events in the PLAYING state for live sources. --- ChangeLog | 6 ++++++ libs/gst/base/gstbasesrc.c | 21 +++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index e75a2f636e..730c81c38c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-03-25 Wim Taymans + + * libs/gst/base/gstbasesrc.c: (gst_base_src_get_range), + (gst_base_src_loop): + Only push the segment events in the PLAYING state for live sources. + 2007-03-23 Jan Schmidt * gst/gstpipeline.c: (gst_pipeline_change_state): diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c index e5fb626c9f..e815a9bfdb 100644 --- a/libs/gst/base/gstbasesrc.c +++ b/libs/gst/base/gstbasesrc.c @@ -1550,16 +1550,6 @@ gst_base_src_loop (GstPad * pad) src->priv->last_sent_eos = FALSE; - /* push events to close/start our segment before we do the real work. */ - if (src->priv->close_segment) { - gst_pad_push_event (pad, src->priv->close_segment); - src->priv->close_segment = NULL; - } - if (src->priv->start_segment) { - gst_pad_push_event (pad, src->priv->start_segment); - src->priv->start_segment = NULL; - } - /* if we operate in bytes, we can calculate an offset */ if (src->segment.format == GST_FORMAT_BYTES) position = src->segment.last_stop; @@ -1572,9 +1562,20 @@ gst_base_src_loop (GstPad * pad) gst_flow_get_name (ret)); goto pause; } + /* this should not happen */ if (G_UNLIKELY (buf == NULL)) goto null_buffer; + /* push events to close/start our segment before we push the buffer. */ + if (src->priv->close_segment) { + gst_pad_push_event (pad, src->priv->close_segment); + src->priv->close_segment = NULL; + } + if (src->priv->start_segment) { + gst_pad_push_event (pad, src->priv->start_segment); + src->priv->start_segment = NULL; + } + /* figure out the new position */ switch (src->segment.format) { case GST_FORMAT_BYTES: