}
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;
}
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;