[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