gst/rtpmanager/rtpsession.c: Ref the rtpsource object before we release the session...
authorWim Taymans <wim.taymans@gmail.com>
Tue, 30 Sep 2008 15:08:52 +0000 (15:08 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 30 Sep 2008 15:08:52 +0000 (15:08 +0000)
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.

ChangeLog
gst/rtpmanager/rtpsession.c

index f3e6b8d..d13eb08 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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:
index 8e5909f..8e543b3 100644 (file)
@@ -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);
 }
 
 /**