summaryrefslogtreecommitdiff
path: root/gst/rist/gstristsink.c
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2020-07-07 10:03:42 -0400
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-07-07 15:37:57 +0000
commitaf741f0723c0c2aec2d06fa57cbf8706a501fe08 (patch)
treed501631e2561bd12c00f80577c63ae7a7bd22f41 /gst/rist/gstristsink.c
parent7346e7c1e23af1d7e4f068c660789d0d68e38b1a (diff)
downloadgstreamer-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.c23
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);