From: Havard Graff Date: Fri, 21 May 2021 16:45:17 +0000 (+0200) Subject: rtpssrcdemux: refactor destruction of GstRtpSsrcDemuxPads X-Git-Tag: 1.19.3~509^2~109 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de3a3882e92891a8a85376091974949346ea31fa;p=platform%2Fupstream%2Fgstreamer.git rtpssrcdemux: refactor destruction of GstRtpSsrcDemuxPads Part-of: --- diff --git a/gst/rtpmanager/gstrtpssrcdemux.c b/gst/rtpmanager/gstrtpssrcdemux.c index 21663cb..7b8d096 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;