diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2008-09-30 15:08:52 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-09-30 15:08:52 +0000 |
commit | aaee1a3d42d8bcf341165bfc0c38263a804cfad6 (patch) | |
tree | 9cfa18a82b20c2d483bb87b5b20a8b91112d6e6c | |
parent | 69fad589acd5653e95a5cee8986548861b7eb1b3 (diff) | |
download | gst-plugins-bad-aaee1a3d42d8bcf341165bfc0c38263a804cfad6.tar.gz gst-plugins-bad-aaee1a3d42d8bcf341165bfc0c38263a804cfad6.tar.bz2 gst-plugins-bad-aaee1a3d42d8bcf341165bfc0c38263a804cfad6.zip |
gst/rtpmanager/rtpsession.c: Ref the rtpsource object before we release the session lock when we emit the signals.
Original commit message from CVS:
* gst/rtpmanager/rtpsession.c: (on_new_ssrc), (on_ssrc_collision),
(on_ssrc_validated), (on_ssrc_active), (on_ssrc_sdes),
(on_bye_ssrc), (on_bye_timeout), (on_timeout), (on_sender_timeout):
Ref the rtpsource object before we release the session lock when we emit
the signals.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gst/rtpmanager/rtpsession.c | 18 |
2 files changed, 26 insertions, 0 deletions
@@ -1,3 +1,11 @@ +2008-09-30 Wim Taymans <wim.taymans@collabora.co.uk> + + * gst/rtpmanager/rtpsession.c: (on_new_ssrc), (on_ssrc_collision), + (on_ssrc_validated), (on_ssrc_active), (on_ssrc_sdes), + (on_bye_ssrc), (on_bye_timeout), (on_timeout), (on_sender_timeout): + Ref the rtpsource object before we release the session lock when we emit + the signals. + 2008-09-30 Ole André Vadla Ravnås <ole.andre.ravnas@tandberg.com> * sys/Makefile.am: diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c index 8e5909ff..8e543b31 100644 --- a/gst/rtpmanager/rtpsession.c +++ b/gst/rtpmanager/rtpsession.c @@ -462,77 +462,95 @@ rtp_session_get_property (GObject * object, guint prop_id, static void on_new_ssrc (RTPSession * sess, RTPSource * source) { + g_object_ref (source); RTP_SESSION_UNLOCK (sess); g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_NEW_SSRC], 0, source); RTP_SESSION_LOCK (sess); + g_object_unref (source); } static void on_ssrc_collision (RTPSession * sess, RTPSource * source) { + g_object_ref (source); RTP_SESSION_UNLOCK (sess); g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_SSRC_COLLISION], 0, source); RTP_SESSION_LOCK (sess); + g_object_unref (source); } static void on_ssrc_validated (RTPSession * sess, RTPSource * source) { + g_object_ref (source); RTP_SESSION_UNLOCK (sess); g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_SSRC_VALIDATED], 0, source); RTP_SESSION_LOCK (sess); + g_object_unref (source); } static void on_ssrc_active (RTPSession * sess, RTPSource * source) { + g_object_ref (source); RTP_SESSION_UNLOCK (sess); g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_SSRC_ACTIVE], 0, source); RTP_SESSION_LOCK (sess); + g_object_unref (source); } static void on_ssrc_sdes (RTPSession * sess, RTPSource * source) { + g_object_ref (source); GST_DEBUG ("SDES changed for SSRC %08x", source->ssrc); RTP_SESSION_UNLOCK (sess); g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_SSRC_SDES], 0, source); RTP_SESSION_LOCK (sess); + g_object_unref (source); } static void on_bye_ssrc (RTPSession * sess, RTPSource * source) { + g_object_ref (source); RTP_SESSION_UNLOCK (sess); g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_BYE_SSRC], 0, source); RTP_SESSION_LOCK (sess); + g_object_unref (source); } static void on_bye_timeout (RTPSession * sess, RTPSource * source) { + g_object_ref (source); RTP_SESSION_UNLOCK (sess); g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_BYE_TIMEOUT], 0, source); RTP_SESSION_LOCK (sess); + g_object_unref (source); } static void on_timeout (RTPSession * sess, RTPSource * source) { + g_object_ref (source); RTP_SESSION_UNLOCK (sess); g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_TIMEOUT], 0, source); RTP_SESSION_LOCK (sess); + g_object_unref (source); } static void on_sender_timeout (RTPSession * sess, RTPSource * source) { + g_object_ref (source); RTP_SESSION_UNLOCK (sess); g_signal_emit (sess, rtp_session_signals[SIGNAL_ON_SENDER_TIMEOUT], 0, source); RTP_SESSION_LOCK (sess); + g_object_unref (source); } /** |