imagefreeze: Only start the task after a seek if a buffer was received already
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 15 Mar 2010 10:54:02 +0000 (11:54 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 11 May 2010 13:31:44 +0000 (14:31 +0100)
gst/imagefreeze/gstimagefreeze.c

index 633ce9b..016be6d 100644 (file)
@@ -540,6 +540,7 @@ gst_image_freeze_src_event (GstPad * pad, GstEvent * event)
       GstSeekType start_type, stop_type;
       gint64 start, stop;
       gint64 last_stop;
+      gboolean start_task;
 
       gst_event_parse_seek (event, &rate, &format, &flags, &start_type, &start,
           &stop_type, &stop);
@@ -601,6 +602,7 @@ gst_image_freeze_src_event (GstPad * pad, GstEvent * event)
       self->need_segment = TRUE;
       last_stop = self->segment.last_stop;
 
+      start_task = self->buffer != NULL;
       GST_OBJECT_UNLOCK (self);
 
       if ((flags & GST_SEEK_FLAG_FLUSH)) {
@@ -622,8 +624,9 @@ gst_image_freeze_src_event (GstPad * pad, GstEvent * event)
 
       GST_DEBUG_OBJECT (pad, "Seek successful");
 
-      gst_pad_start_task (self->srcpad,
-          (GstTaskFunction) gst_image_freeze_src_loop, self->srcpad);
+      if (start_task)
+        gst_pad_start_task (self->srcpad,
+            (GstTaskFunction) gst_image_freeze_src_loop, self->srcpad);
       ret = TRUE;
       break;
     }