From 98db43c6f033e53febec507a0fc9ddee88314a61 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 14 May 2008 13:52:59 +0000 Subject: [PATCH] gst/gstpad.c: Release pad lock before calling out to avoid a possible deadlock. Original commit message from CVS: * gst/gstpad.c: (gst_pad_peer_accept_caps): Release pad lock before calling out to avoid a possible deadlock. --- ChangeLog | 5 +++++ gst/gstpad.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8cdc4be..a7e7cb2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2008-05-14 Wim Taymans + * gst/gstpad.c: (gst_pad_peer_accept_caps): + Release pad lock before calling out to avoid a possible deadlock. + +2008-05-14 Wim Taymans + * gst/parse/grammar.y: Remove unneeded value unset. diff --git a/gst/gstpad.c b/gst/gstpad.c index 4a1fa5b..86d7d54 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -2327,9 +2327,14 @@ gst_pad_peer_accept_caps (GstPad * pad, GstCaps * caps) if (G_UNLIKELY (peerpad == NULL)) goto no_peer; - result = gst_pad_accept_caps (peerpad, caps); + gst_object_ref (peerpad); + /* release lock before calling external methods but keep ref to pad */ GST_OBJECT_UNLOCK (pad); + result = gst_pad_accept_caps (peerpad, caps); + + gst_object_unref (peerpad); + return result; no_peer: -- 2.7.4