diff options
author | Olivier Crete <tester@tester.ca> | 2008-08-05 08:58:27 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-08-05 08:58:27 +0000 |
commit | efc6bf88850d0c7cc5679a9ca89e33b0b1c806dc (patch) | |
tree | 922722d16782572825c69b0a5a10372727ecff27 /gst | |
parent | 8a35b0101a703718e52a3b12c8a8777572b9f150 (diff) | |
download | gst-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.c | 13 |
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) |