summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHavard Graff <havard@pexip.com>2021-05-21 18:45:17 +0200
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-05-25 22:04:41 +0000
commitde3a3882e92891a8a85376091974949346ea31fa (patch)
tree5aceb375da6aefa14fa6a5d67b3c2de421d64b16
parentc721c6fe720edd139bf0991531a9d1e38d6e4655 (diff)
downloadgstreamer-plugins-good-de3a3882e92891a8a85376091974949346ea31fa.tar.gz
rtpssrcdemux: refactor destruction of GstRtpSsrcDemuxPads
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/992>
-rw-r--r--gst/rtpmanager/gstrtpssrcdemux.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/gst/rtpmanager/gstrtpssrcdemux.c b/gst/rtpmanager/gstrtpssrcdemux.c
index 21663cb8d..7b8d0960d 100644
--- a/gst/rtpmanager/gstrtpssrcdemux.c
+++ b/gst/rtpmanager/gstrtpssrcdemux.c
@@ -516,21 +516,22 @@ gst_rtp_ssrc_demux_init (GstRtpSsrcDemux * demux)
}
static void
-gst_rtp_ssrc_demux_reset (GstRtpSsrcDemux * demux)
+gst_rtp_ssrc_demux_pads_free (GstRtpSsrcDemuxPads * dpads)
{
- GSList *walk;
+ gst_pad_set_active (dpads->rtp_pad, FALSE);
+ gst_pad_set_active (dpads->rtcp_pad, FALSE);
- for (walk = demux->srcpads; walk; walk = g_slist_next (walk)) {
- GstRtpSsrcDemuxPads *dpads = (GstRtpSsrcDemuxPads *) walk->data;
+ gst_element_remove_pad (GST_PAD_PARENT (dpads->rtp_pad), dpads->rtp_pad);
+ gst_element_remove_pad (GST_PAD_PARENT (dpads->rtcp_pad), dpads->rtcp_pad);
- gst_pad_set_active (dpads->rtp_pad, FALSE);
- gst_pad_set_active (dpads->rtcp_pad, FALSE);
+ g_free (dpads);
+}
- gst_element_remove_pad (GST_ELEMENT_CAST (demux), dpads->rtp_pad);
- gst_element_remove_pad (GST_ELEMENT_CAST (demux), dpads->rtcp_pad);
- g_free (dpads);
- }
- g_slist_free (demux->srcpads);
+static void
+gst_rtp_ssrc_demux_reset (GstRtpSsrcDemux * demux)
+{
+ g_slist_free_full (demux->srcpads,
+ (GDestroyNotify) gst_rtp_ssrc_demux_pads_free);
demux->srcpads = NULL;
}
@@ -574,17 +575,11 @@ gst_rtp_ssrc_demux_clear_ssrc (GstRtpSsrcDemux * demux, guint32 ssrc)
demux->srcpads = g_slist_remove (demux->srcpads, dpads);
GST_OBJECT_UNLOCK (demux);
- gst_pad_set_active (dpads->rtp_pad, FALSE);
- gst_pad_set_active (dpads->rtcp_pad, FALSE);
-
g_signal_emit (G_OBJECT (demux),
gst_rtp_ssrc_demux_signals[SIGNAL_REMOVED_SSRC_PAD], 0, ssrc,
dpads->rtp_pad);
- gst_element_remove_pad (GST_ELEMENT_CAST (demux), dpads->rtp_pad);
- gst_element_remove_pad (GST_ELEMENT_CAST (demux), dpads->rtcp_pad);
-
- g_free (dpads);
+ gst_rtp_ssrc_demux_pads_free (dpads);
return;