summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorOlivier Crete <tester@tester.ca>2008-08-05 08:58:27 +0000
committerWim Taymans <wim.taymans@gmail.com>2008-08-05 08:58:27 +0000
commitefc6bf88850d0c7cc5679a9ca89e33b0b1c806dc (patch)
tree922722d16782572825c69b0a5a10372727ecff27 /gst
parent8a35b0101a703718e52a3b12c8a8777572b9f150 (diff)
downloadgst-plugins-bad-efc6bf88850d0c7cc5679a9ca89e33b0b1c806dc.tar.gz
gst-plugins-bad-efc6bf88850d0c7cc5679a9ca89e33b0b1c806dc.tar.bz2
gst-plugins-bad-efc6bf88850d0c7cc5679a9ca89e33b0b1c806dc.zip
gst/rtpmanager/gstrtpbin.c: Release lock before emitting the request-pt-map signal.
Original commit message from CVS: Patch by: Olivier Crete <tester at tester dot ca> * gst/rtpmanager/gstrtpbin.c: (get_pt_map): Release lock before emitting the request-pt-map signal. Fixes #543480.
Diffstat (limited to 'gst')
-rw-r--r--gst/rtpmanager/gstrtpbin.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c
index 44b2235e..f3e95370 100644
--- a/gst/rtpmanager/gstrtpbin.c
+++ b/gst/rtpmanager/gstrtpbin.c
@@ -618,11 +618,24 @@ get_pt_map (GstRtpBinSession * session, guint pt)
g_value_init (&ret, GST_TYPE_CAPS);
g_value_set_boxed (&ret, NULL);
+ GST_RTP_SESSION_UNLOCK (session);
+
g_signal_emitv (args, gst_rtp_bin_signals[SIGNAL_REQUEST_PT_MAP], 0, &ret);
+ GST_RTP_SESSION_LOCK (session);
+
g_value_unset (&args[0]);
g_value_unset (&args[1]);
g_value_unset (&args[2]);
+
+ /* look in the cache again because we let the lock go */
+ caps = g_hash_table_lookup (session->ptmap, GINT_TO_POINTER (pt));
+ if (caps) {
+ gst_caps_ref (caps);
+ g_value_unset (&ret);
+ goto done;
+ }
+
caps = (GstCaps *) g_value_dup_boxed (&ret);
g_value_unset (&ret);
if (!caps)