[farsight2/master] rtp: use g_signal_connect_object to keep refs while the signal is running
Olivier Crête
olivier.crete at collabora.co.uk
Fri Jul 17 11:07:53 PDT 2009
---
gst/fsrtpconference/fs-rtp-session.c | 20 ++++++------
gst/fsrtpconference/fs-rtp-stream.c | 40 ++++++++++++------------
gst/fsrtpconference/fs-rtp-substream.c | 8 ++--
transmitters/nice/fs-nice-stream-transmitter.c | 17 +++++-----
4 files changed, 43 insertions(+), 42 deletions(-)
diff --git a/gst/fsrtpconference/fs-rtp-session.c b/gst/fsrtpconference/fs-rtp-session.c
index a3bbbf0..58e571d 100644
--- a/gst/fsrtpconference/fs-rtp-session.c
+++ b/gst/fsrtpconference/fs-rtp-session.c
@@ -2491,11 +2491,11 @@ fs_rtp_session_new_recv_pad (FsRtpSession *session, GstPad *new_pad,
return;
}
- g_signal_connect (substream, "blocked", G_CALLBACK (_substream_blocked),
- session);
+ g_signal_connect_object (substream, "blocked",
+ G_CALLBACK (_substream_blocked), session, 0);
- g_signal_connect (substream, "unlinked", G_CALLBACK (_substream_unlinked),
- session);
+ g_signal_connect_object (substream, "unlinked",
+ G_CALLBACK (_substream_unlinked), session, 0);
/* Lets find the FsRtpStream for this substream, if no Stream claims it
* then we just store it
@@ -2523,13 +2523,13 @@ fs_rtp_session_new_recv_pad (FsRtpSession *session, GstPad *new_pad,
session->priv->free_substreams =
g_list_prepend (session->priv->free_substreams, substream);
- g_signal_connect (substream, "error", G_CALLBACK (_substream_error),
- session);
+ g_signal_connect_object (substream, "error",
+ G_CALLBACK (_substream_error), session, 0);
if (no_rtcp_timeout > 0)
{
- g_signal_connect (substream, "no-rtcp-timedout",
- G_CALLBACK (_substream_no_rtcp_timedout_cb), session);
+ g_signal_connect_object (substream, "no-rtcp-timedout",
+ G_CALLBACK (_substream_no_rtcp_timedout_cb), session, 0);
GST_DEBUG ("No stream for SSRC %x, waiting for %d ms before associating"
"in session %u", ssrc, no_rtcp_timeout, session->id);
}
@@ -4254,8 +4254,8 @@ fs_rtp_session_get_codec_params_unlock (FsRtpSession *session,
pad = gst_element_get_static_pad (session->priv->discovery_capsfilter,
"src");
- g_signal_connect (pad, "notify::caps", G_CALLBACK (_discovery_caps_changed),
- session);
+ g_signal_connect_object (pad, "notify::caps",
+ G_CALLBACK (_discovery_caps_changed), session, 0);
gst_object_unref (pad);
}
diff --git a/gst/fsrtpconference/fs-rtp-stream.c b/gst/fsrtpconference/fs-rtp-stream.c
index a70c7a5..f393953 100644
--- a/gst/fsrtpconference/fs-rtp-stream.c
+++ b/gst/fsrtpconference/fs-rtp-stream.c
@@ -494,30 +494,30 @@ fs_rtp_stream_constructed (GObject *object)
g_object_set (self->priv->stream_transmitter, "sending",
self->priv->direction & FS_DIRECTION_SEND, NULL);
- g_signal_connect (self->priv->stream_transmitter,
+ g_signal_connect_object (self->priv->stream_transmitter,
"local-candidates-prepared",
G_CALLBACK (_local_candidates_prepared),
- self);
- g_signal_connect (self->priv->stream_transmitter,
+ self, 0);
+ g_signal_connect_object (self->priv->stream_transmitter,
"new-active-candidate-pair",
G_CALLBACK (_new_active_candidate_pair),
- self);
- g_signal_connect (self->priv->stream_transmitter,
+ self, 0);
+ g_signal_connect_object (self->priv->stream_transmitter,
"new-local-candidate",
G_CALLBACK (_new_local_candidate),
- self);
- g_signal_connect (self->priv->stream_transmitter,
+ self, 0);
+ g_signal_connect_object (self->priv->stream_transmitter,
"error",
G_CALLBACK (_transmitter_error),
- self);
- g_signal_connect (self->priv->stream_transmitter,
+ self, 0);
+ g_signal_connect_object (self->priv->stream_transmitter,
"known-source-packet-received",
G_CALLBACK (_known_source_packet_received),
- self);
- g_signal_connect (self->priv->stream_transmitter,
+ self, 0);
+ g_signal_connect_object (self->priv->stream_transmitter,
"state-changed",
G_CALLBACK (_state_changed),
- self);
+ self, 0);
if (!fs_stream_transmitter_gather_local_candidates (
self->priv->stream_transmitter,
@@ -948,14 +948,14 @@ fs_rtp_stream_add_substream_unlock (FsRtpStream *stream,
"receiving", ((stream->priv->direction & FS_DIRECTION_RECV) != 0),
NULL);
- g_signal_connect (substream, "unlinked",
- G_CALLBACK (_substream_unlinked), stream);
- g_signal_connect (substream, "src-pad-added",
- G_CALLBACK (_substream_src_pad_added), stream);
- g_signal_connect (substream, "codec-changed",
- G_CALLBACK (_substream_codec_changed), stream);
- g_signal_connect (substream, "error",
- G_CALLBACK (_substream_error), stream);
+ g_signal_connect_object (substream, "unlinked",
+ G_CALLBACK (_substream_unlinked), stream, 0);
+ g_signal_connect_object (substream, "src-pad-added",
+ G_CALLBACK (_substream_src_pad_added), stream, 0);
+ g_signal_connect_object (substream, "codec-changed",
+ G_CALLBACK (_substream_codec_changed), stream, 0);
+ g_signal_connect_object (substream, "error",
+ G_CALLBACK (_substream_error), stream, 0);
fs_rtp_sub_stream_verify_codec_locked (substream);
diff --git a/gst/fsrtpconference/fs-rtp-substream.c b/gst/fsrtpconference/fs-rtp-substream.c
index 7b62f7c..f58ba8a 100644
--- a/gst/fsrtpconference/fs-rtp-substream.c
+++ b/gst/fsrtpconference/fs-rtp-substream.c
@@ -536,8 +536,9 @@ fs_rtp_sub_stream_constructed (GObject *object)
return;
}
- self->priv->rtpbin_unlinked_sig = g_signal_connect (self->priv->rtpbin_pad,
- "unlinked", G_CALLBACK (rtpbin_pad_unlinked), self);
+ self->priv->rtpbin_unlinked_sig = g_signal_connect_object (
+ self->priv->rtpbin_pad, "unlinked", G_CALLBACK (rtpbin_pad_unlinked),
+ self, 0);
tmp = g_strdup_printf ("output_recv_valve_%d_%d_%d", self->priv->session->id,
self->ssrc, self->pt);
@@ -1314,8 +1315,7 @@ _rtpbin_pad_blocked_callback (GstPad *pad, gboolean blocked, gpointer user_data)
g_signal_emit (substream, signals[BLOCKED], 0, substream->priv->stream);
- gst_pad_set_blocked_async (substream->priv->rtpbin_pad, FALSE,
- do_nothing_blocked_callback, NULL);
+ gst_pad_set_blocked_async (pad, FALSE, do_nothing_blocked_callback, NULL);
if (stream)
g_object_unref (stream);
diff --git a/transmitters/nice/fs-nice-stream-transmitter.c b/transmitters/nice/fs-nice-stream-transmitter.c
index 3d21623..4efbc05 100644
--- a/transmitters/nice/fs-nice-stream-transmitter.c
+++ b/transmitters/nice/fs-nice-stream-transmitter.c
@@ -1347,14 +1347,15 @@ fs_nice_stream_transmitter_build (FsNiceStreamTransmitter *self,
}
}
- self->priv->state_changed_handler_id = g_signal_connect (agent->agent,
- "component-state-changed", G_CALLBACK (agent_state_changed), self);
- self->priv->gathering_done_handler_id = g_signal_connect (agent->agent,
- "candidate-gathering-done", G_CALLBACK (agent_gathering_done), self);
- self->priv->new_selected_pair_handler_id = g_signal_connect (agent->agent,
- "new-selected-pair", G_CALLBACK (agent_new_selected_pair), self);
- self->priv->new_candidate_handler_id = g_signal_connect (agent->agent,
- "new-candidate", G_CALLBACK (agent_new_candidate), self);
+ self->priv->state_changed_handler_id = g_signal_connect_object (agent->agent,
+ "component-state-changed", G_CALLBACK (agent_state_changed), self, 0);
+ self->priv->gathering_done_handler_id = g_signal_connect_object (agent->agent,
+ "candidate-gathering-done", G_CALLBACK (agent_gathering_done), self, 0);
+ self->priv->new_selected_pair_handler_id = g_signal_connect_object (
+ agent->agent, "new-selected-pair", G_CALLBACK (agent_new_selected_pair),
+ self, 0);
+ self->priv->new_candidate_handler_id = g_signal_connect_object (agent->agent,
+ "new-candidate", G_CALLBACK (agent_new_candidate), self, 0);
self->priv->gststream = fs_nice_transmitter_add_gst_stream (
self->priv->transmitter,
--
1.5.6.5
More information about the farsight-commits
mailing list