From: <wt...@ke...> - 2008-05-14 13:53:09
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: wtay Date: Wed May 14 2008 13:53:13 UTC Log message: * gst/gstpad.c: (gst_pad_peer_accept_caps): Release pad lock before calling out to avoid a possible deadlock. Modified files: . : ChangeLog gst : gstpad.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.3850&r2=1.3851 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.569&r2=1.570 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.3850 retrieving revision 1.3851 diff -u -d -r1.3850 -r1.3851 --- ChangeLog 14 May 2008 10:22:14 -0000 1.3850 +++ ChangeLog 14 May 2008 13:52:57 -0000 1.3851 @@ -1,5 +1,10 @@ 2008-05-14 Wim Taymans <wim...@co...> + * gst/gstpad.c: (gst_pad_peer_accept_caps): + Release pad lock before calling out to avoid a possible deadlock. + +2008-05-14 Wim Taymans <wim...@co...> * gst/parse/grammar.y: Remove unneeded value unset. Index: gstpad.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.569 retrieving revision 1.570 diff -u -d -r1.569 -r1.570 --- gstpad.c 6 May 2008 08:43:56 -0000 1.569 +++ gstpad.c 14 May 2008 13:52:59 -0000 1.570 @@ -2327,9 +2327,14 @@ 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: |