v4l2videodec: Don't lock the decoder when stopping task

That src pad task may need to take the lock when being pulled
down. takeing that lock can lead to a deadlock.

https://bugzilla.gnome.org/show_bug.cgi?id=730207
This commit is contained in:
Nicolas Dufresne 2014-05-15 10:31:40 -04:00
parent 5f10d2b4e2
commit f384047be3

View file

@ -213,9 +213,10 @@ gst_v4l2_video_dec_stop (GstVideoDecoder * decoder)
gst_v4l2_object_unlock (self->v4l2output);
gst_v4l2_object_unlock (self->v4l2capture);
GST_VIDEO_DECODER_STREAM_LOCK (decoder);
/* Wait for capture thread to stop */
gst_pad_stop_task (decoder->srcpad);
GST_VIDEO_DECODER_STREAM_LOCK (decoder);
self->output_flow = GST_FLOW_OK;
GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
@ -273,7 +274,9 @@ gst_v4l2_video_dec_flush (GstVideoDecoder * decoder)
GST_DEBUG_OBJECT (self, "Flushing");
/* Wait for capture thread to stop */
GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
gst_pad_stop_task (decoder->srcpad);
GST_VIDEO_DECODER_STREAM_LOCK (decoder);
self->output_flow = GST_FLOW_OK;
if (self->v4l2output->pool)