v4l2videodec: Ensure processing thread has stopped when draining
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 11 Mar 2014 18:23:32 +0000 (14:23 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Thu, 8 May 2014 19:56:35 +0000 (15:56 -0400)
sys/v4l2/gstv4l2videodec.c

index 6d367fc..ff321a1 100644 (file)
@@ -305,7 +305,12 @@ gst_v4l2_video_dec_finish (GstVideoDecoder * decoder)
   }
   GST_VIDEO_DECODER_STREAM_LOCK (decoder);
 
-  g_assert (g_atomic_int_get (&self->processing) == FALSE);
+  /* Ensure the processing thread has stopped */
+  if (self->processing) {
+    gst_v4l2_object_unlock (self->v4l2capture);
+    gst_pad_stop_task (decoder->srcpad);
+    g_assert (g_atomic_int_get (&self->processing) == FALSE);
+  }
 
   if (ret == GST_FLOW_FLUSHING)
     ret = self->output_flow;