summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager/rtpsession.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2008-09-30 15:08:52 +0000
committerWim Taymans <wim.taymans@gmail.com>2008-09-30 15:08:52 +0000
commitaaee1a3d42d8bcf341165bfc0c38263a804cfad6 (patch)
tree9cfa18a82b20c2d483bb87b5b20a8b91112d6e6c /gst/rtpmanager/rtpsession.c
parent69fad589acd5653e95a5cee8986548861b7eb1b3 (diff)
downloadgst-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.
Diffstat (limited to 'gst/rtpmanager/rtpsession.c')
-rw-r--r--gst/rtpmanager/rtpsession.c18
1 files changed, 18 insertions, 0 deletions
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);
}
/**