rtpbin: Unlock before adding pad in new_payload_found
authorTrond Andersen <trond.andersen@tandberg.com>
Wed, 7 Apr 2010 13:31:52 +0000 (15:31 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Fri, 24 Sep 2010 12:00:11 +0000 (14:00 +0200)
Holding internal locks while potentially calling out is a source
of deadlocks, and in this case the application might subscribe to the
pad-added signal.

Fixes #630449

gst/rtpmanager/gstrtpbin.c

index 277007aa493f337a46f00be1d6abcc016c6d5b6c..085fe8b43d15d54506bb715fef388ced6bf8880b 100644 (file)
@@ -2150,9 +2150,10 @@ new_payload_found (GstElement * element, guint pt, GstPad * pad,
 
   gst_pad_set_caps (gpad, GST_PAD_CAPS (pad));
   gst_pad_set_active (gpad, TRUE);
-  gst_element_add_pad (GST_ELEMENT_CAST (rtpbin), gpad);
   GST_RTP_BIN_SHUTDOWN_UNLOCK (rtpbin);
 
+  gst_element_add_pad (GST_ELEMENT_CAST (rtpbin), gpad);
+
   return;
 
 shutdown: