summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2009-07-05 21:29:40 +0200
committerEdward Hervey <bilboed@bilboed.com>2009-07-05 21:32:20 +0200
commitc3adf8862135050fd410a85000b0634e8e06f893 (patch)
treed54fa04a207bc93f62c4e306e3d504fa79d87810
parent04e23f2d6a3ca3b10e609e6084e52746c16e208a (diff)
adder: Call set_flushing(TRUE) for flushing seeks *when* the streaming is stopped.
This ensures that collectpads' cookie is properly updated so that when the streaming threads will restart and be checking for the flushing status of all pads there will be no inconsistent state.
-rw-r--r--gst/adder/gstadder.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gst/adder/gstadder.c b/gst/adder/gstadder.c
index 5f93f5310..87e2d79ba 100644
--- a/gst/adder/gstadder.c
+++ b/gst/adder/gstadder.c
@@ -693,8 +693,12 @@ gst_adder_src_event (GstPad * pad, GstEvent * event)
else
adder->segment_position = 0;
/* we flushed out the downstream segment, make sure we push a new one */
- if (flush)
+ if (flush) {
adder->segment_pending = TRUE;
+ /* Yes, we need to call _set_flushing again *WHEN* the streaming threads
+ * have stopped so that the cookie gets properly updated. */
+ gst_collect_pads_set_flushing (adder->collect, TRUE);
+ }
/* we might have a pending flush_stop event now. This event will either be
* sent by an upstream element when it completes the seek or we will push
* one in the collected callback ourself */