From 4228ba0c6b095da4cd24e76a576aff5733b6c91e Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Tue, 19 May 2009 18:41:02 +0300 Subject: [PATCH] adder: only send flush_stop when seek failed This is still not the ultimate fix. Added some comment to explain the troubles. --- gst/adder/gstadder.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gst/adder/gstadder.c b/gst/adder/gstadder.c index 0861997..04f5870 100644 --- a/gst/adder/gstadder.c +++ b/gst/adder/gstadder.c @@ -672,13 +672,20 @@ gst_adder_src_event (GstPad * pad, GstEvent * event) else adder->segment_position = 0; adder->segment_pending = TRUE; - adder->flush_stop_pending = - ((flags & GST_SEEK_FLAG_FLUSH) == GST_SEEK_FLAG_FLUSH); GST_OBJECT_UNLOCK (adder->collect); GST_DEBUG_OBJECT (adder, "forwarding seek event: %" GST_PTR_FORMAT, event); result = forward_event (adder, event); + if (result) { + /* seek failed. maybe source is a live source. send a flush_stop + * FIXME: ideally we just forward flush event, but live sources don't + * send anything and we need a flush events to unlock the collect + * function + */ + adder->flush_stop_pending = + ((flags & GST_SEEK_FLAG_FLUSH) == GST_SEEK_FLAG_FLUSH); + } break; } case GST_EVENT_QOS: -- 2.7.4