From 04e2a38ae3d8323a880a040fbcff5fd7e8ddda4c Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Mon, 5 Jan 2015 21:26:22 -0300 Subject: [PATCH] wrappercamerabinsrc: fix deadlock with pad object lock The image capture mutex and the pad object lock would cause a race if the pad query was made right when the image probe was running. The image probe needs the capture mutex and the querying would need the pad object lock. --- gst/camerabin2/gstwrappercamerabinsrc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gst/camerabin2/gstwrappercamerabinsrc.c b/gst/camerabin2/gstwrappercamerabinsrc.c index 892bac328a..22e96ae495 100644 --- a/gst/camerabin2/gstwrappercamerabinsrc.c +++ b/gst/camerabin2/gstwrappercamerabinsrc.c @@ -838,6 +838,7 @@ start_image_capture (GstWrapperCameraBinSrc * self) pad = gst_element_get_static_pad (self->src_vid_src, "src"); if (self->image_renegotiate) { + g_mutex_unlock (&bcamsrc->capturing_mutex); peer = gst_pad_get_peer (pad); gst_object_unref (pad); gst_pad_query (peer, gst_query_new_drain ()); @@ -845,7 +846,6 @@ start_image_capture (GstWrapperCameraBinSrc * self) self->image_renegotiate = FALSE; - g_mutex_unlock (&bcamsrc->capturing_mutex); gst_element_set_state (self->src_vid_src, GST_STATE_READY); /* clean capsfilter caps so they don't interfere here */