diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2020-07-07 10:03:42 -0400 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-07-07 15:37:57 +0000 |
commit | af741f0723c0c2aec2d06fa57cbf8706a501fe08 (patch) | |
tree | d501631e2561bd12c00f80577c63ae7a7bd22f41 /gst/rist/gstristsink.c | |
parent | 7346e7c1e23af1d7e4f068c660789d0d68e38b1a (diff) | |
download | gstreamer-plugins-bad-af741f0723c0c2aec2d06fa57cbf8706a501fe08.tar.gz |
rist: Use g_signal_connect_object()
rtpbin can still emit signals when it is being disposed, and while
rtpbin is inside ristsrc/ristsink it can still live longer.
So we either have disconnect all signals at some point, or let GObject
take care of that automatically.
Related to !1412
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1413>
Diffstat (limited to 'gst/rist/gstristsink.c')
-rw-r--r-- | gst/rist/gstristsink.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/gst/rist/gstristsink.c b/gst/rist/gstristsink.c index 3f649b087..464b0719d 100644 --- a/gst/rist/gstristsink.c +++ b/gst/rist/gstristsink.c @@ -452,9 +452,10 @@ gst_rist_sink_on_new_sender_ssrc (GstRistSink * sink, guint session_id, if (ssrc & 1) { g_object_set (source, "disable-rtcp", TRUE, NULL); } else { - g_signal_connect (session, "on-app-rtcp", (GCallback) on_app_rtcp, sink); - g_signal_connect (session, "on-receiving-rtcp", - (GCallback) on_receiving_rtcp, sink); + g_signal_connect_object (session, "on-app-rtcp", + (GCallback) on_app_rtcp, sink, 0); + g_signal_connect_object (session, "on-receiving-rtcp", + (GCallback) on_receiving_rtcp, sink, 0); } g_object_unref (source); @@ -585,14 +586,14 @@ gst_rist_sink_init (GstRistSink * sink) "sdes", sdes, NULL); gst_structure_free (sdes); - g_signal_connect_swapped (sink->rtpbin, "request-pt-map", - G_CALLBACK (gst_rist_sink_request_pt_map), sink); - g_signal_connect_swapped (sink->rtpbin, "request-aux-sender", - G_CALLBACK (gst_rist_sink_request_aux_sender), sink); - g_signal_connect_swapped (sink->rtpbin, "on-new-sender-ssrc", - G_CALLBACK (gst_rist_sink_on_new_sender_ssrc), sink); - g_signal_connect_swapped (sink->rtpbin, "on-new-ssrc", - G_CALLBACK (gst_rist_sink_on_new_receiver_ssrc), sink); + g_signal_connect_object (sink->rtpbin, "request-pt-map", + G_CALLBACK (gst_rist_sink_request_pt_map), sink, G_CONNECT_SWAPPED); + g_signal_connect_object (sink->rtpbin, "request-aux-sender", + G_CALLBACK (gst_rist_sink_request_aux_sender), sink, G_CONNECT_SWAPPED); + g_signal_connect_object (sink->rtpbin, "on-new-sender-ssrc", + G_CALLBACK (gst_rist_sink_on_new_sender_ssrc), sink, G_CONNECT_SWAPPED); + g_signal_connect_object (sink->rtpbin, "on-new-ssrc", + G_CALLBACK (gst_rist_sink_on_new_receiver_ssrc), sink, G_CONNECT_SWAPPED); sink->rtxbin = gst_bin_new ("rist_send_rtxbin"); g_object_ref_sink (sink->rtxbin); |