rndbuffersize: must send flush-stop after acquiring the stream lock
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Wed, 9 May 2012 11:24:37 +0000 (12:24 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Wed, 9 May 2012 11:24:37 +0000 (12:24 +0100)
Otherwise the streaming thread might just keep on going and we
might never get the stream lock.

gst/debugutils/rndbuffersize.c

index 81bad5f..9b08aeb 100644 (file)
@@ -309,14 +309,15 @@ gst_rnd_buffer_size_src_event (GstPad * pad, GstObject * parent,
   if ((flags & GST_SEEK_FLAG_FLUSH)) {
     gst_pad_push_event (self->srcpad, gst_event_new_flush_start ());
     gst_pad_push_event (self->sinkpad, gst_event_new_flush_start ());
-    gst_pad_push_event (self->srcpad, gst_event_new_flush_stop (TRUE));
-    gst_pad_push_event (self->sinkpad, gst_event_new_flush_stop (TRUE));
   } else {
     gst_pad_pause_task (self->sinkpad);
   }
 
   GST_PAD_STREAM_LOCK (self->sinkpad);
 
+  gst_pad_push_event (self->srcpad, gst_event_new_flush_stop (TRUE));
+  gst_pad_push_event (self->sinkpad, gst_event_new_flush_stop (TRUE));
+
   GST_INFO_OBJECT (pad, "seeking to offset %" G_GINT64_FORMAT, start);
 
   self->offset = start;