wrappercamerabinsrc: set src to ready when there are no pending buffers
authorThiago Santos <ts.santos@sisa.samsung.com>
Wed, 16 Jul 2014 21:27:15 +0000 (18:27 -0300)
committerThiago Santos <ts.santos@sisa.samsung.com>
Thu, 17 Jul 2014 13:06:09 +0000 (10:06 -0300)
Setting to ready will block waiting for buffers to be reclaimed, so flush
before setting to null to make sure no buffers are pending

https://bugzilla.gnome.org/show_bug.cgi?id=733072

gst/camerabin2/gstwrappercamerabinsrc.c

index a00785f1a9969db38d0cf2a3b3c172882f29a950..32fb38ee07ccfb5bc6c8635a6ad8377984c810d3 100644 (file)
@@ -828,7 +828,6 @@ start_image_capture (GstWrapperCameraBinSrc * self)
   GstPad *pad, *peer;
 
   GST_DEBUG_OBJECT (self, "Starting image capture");
-  gst_element_set_state (self->src_vid_src, GST_STATE_READY);
 
   /* FIXME - V4L2 source will not close the device until all buffers have came
    * back. Flushing the pipeline, will ensure it's properly closed, and that
@@ -838,6 +837,7 @@ start_image_capture (GstWrapperCameraBinSrc * self)
   peer = gst_pad_get_peer (pad);
   gst_object_unref (pad);
   gst_pad_send_event (peer, gst_event_new_flush_start ());
+  gst_element_set_state (self->src_vid_src, GST_STATE_READY);
   gst_pad_send_event (peer, gst_event_new_flush_stop (TRUE));
   gst_object_unref (peer);