diff options
author | Havard Graff <havard@pexip.com> | 2021-05-21 18:45:17 +0200 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-05-25 22:04:41 +0000 |
commit | de3a3882e92891a8a85376091974949346ea31fa (patch) | |
tree | 5aceb375da6aefa14fa6a5d67b3c2de421d64b16 | |
parent | c721c6fe720edd139bf0991531a9d1e38d6e4655 (diff) | |
download | gstreamer-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.c | 31 |
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; |