summaryrefslogtreecommitdiff
path: root/gst
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
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')
-rw-r--r--gst/rist/gstristsink.c23
-rw-r--r--gst/rist/gstristsrc.c20
2 files changed, 22 insertions, 21 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);
diff --git a/gst/rist/gstristsrc.c b/gst/rist/gstristsrc.c
index aa3899156..a9cbff9bd 100644
--- a/gst/rist/gstristsrc.c
+++ b/gst/rist/gstristsrc.c
@@ -434,10 +434,10 @@ gst_rist_src_init (GstRistSrc * src)
"sdes", sdes, NULL);
gst_structure_free (sdes);
- g_signal_connect_swapped (src->rtpbin, "request-pt-map",
- G_CALLBACK (gst_rist_src_request_pt_map), src);
- g_signal_connect_swapped (src->rtpbin, "request-aux-receiver",
- G_CALLBACK (gst_rist_src_request_aux_receiver), src);
+ g_signal_connect_object (src->rtpbin, "request-pt-map",
+ G_CALLBACK (gst_rist_src_request_pt_map), src, G_CONNECT_SWAPPED);
+ g_signal_connect_object (src->rtpbin, "request-aux-receiver",
+ G_CALLBACK (gst_rist_src_request_aux_receiver), src, G_CONNECT_SWAPPED);
src->rtxbin = gst_bin_new ("rist_recv_rtxbin");
g_object_ref_sink (src->rtxbin);
@@ -454,12 +454,12 @@ gst_rist_src_init (GstRistSrc * src)
gst_object_unref (pad);
gst_element_add_pad (src->rtxbin, gpad);
- g_signal_connect_swapped (src->rtpbin, "pad-added",
- G_CALLBACK (gst_rist_src_pad_added), src);
- g_signal_connect_swapped (src->rtpbin, "on-new-ssrc",
- G_CALLBACK (gst_rist_src_on_new_ssrc), src);
- g_signal_connect_swapped (src->rtpbin, "new-jitterbuffer",
- G_CALLBACK (gst_rist_src_new_jitterbuffer), src);
+ g_signal_connect_object (src->rtpbin, "pad-added",
+ G_CALLBACK (gst_rist_src_pad_added), src, G_CONNECT_SWAPPED);
+ g_signal_connect_object (src->rtpbin, "on-new-ssrc",
+ G_CALLBACK (gst_rist_src_on_new_ssrc), src, G_CONNECT_SWAPPED);
+ g_signal_connect_object (src->rtpbin, "new-jitterbuffer",
+ G_CALLBACK (gst_rist_src_new_jitterbuffer), src, G_CONNECT_SWAPPED);
bond = gst_rist_src_add_bond (src);
if (!bond)