diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index e629f69c0e..218bab1807 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -239,7 +239,8 @@ static GstClock *gst_rtp_jitter_buffer_provide_clock (GstElement * element); /* pad overrides */ static GstCaps *gst_rtp_jitter_buffer_getcaps (GstPad * pad, GstCaps * filter); -static GstIterator *gst_rtp_jitter_buffer_iterate_internal_links (GstPad * pad); +static GstIterator *gst_rtp_jitter_buffer_iterate_internal_links (GstPad * pad, + GstObject * parent); /* sinkpad overrides */ static gboolean gst_rtp_jitter_buffer_sink_event (GstPad * pad, @@ -512,14 +513,14 @@ gst_rtp_jitter_buffer_finalize (GObject * object) } static GstIterator * -gst_rtp_jitter_buffer_iterate_internal_links (GstPad * pad) +gst_rtp_jitter_buffer_iterate_internal_links (GstPad * pad, GstObject * parent) { GstRtpJitterBuffer *jitterbuffer; GstPad *otherpad = NULL; GstIterator *it; GValue val = { 0, }; - jitterbuffer = GST_RTP_JITTER_BUFFER (gst_pad_get_parent (pad)); + jitterbuffer = GST_RTP_JITTER_BUFFER (parent); if (pad == jitterbuffer->priv->sinkpad) { otherpad = jitterbuffer->priv->srcpad; @@ -534,8 +535,6 @@ gst_rtp_jitter_buffer_iterate_internal_links (GstPad * pad) it = gst_iterator_new_single (GST_TYPE_PAD, &val); g_value_unset (&val); - gst_object_unref (jitterbuffer); - return it; } diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index 2b38ad773a..7e9140d7c1 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -1449,15 +1449,13 @@ gst_rtp_session_event_recv_rtp_src (GstPad * pad, GstEvent * event) static GstIterator * -gst_rtp_session_iterate_internal_links (GstPad * pad) +gst_rtp_session_iterate_internal_links (GstPad * pad, GstObject * parent) { GstRtpSession *rtpsession; GstPad *otherpad = NULL; GstIterator *it = NULL; - rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad)); - if (G_UNLIKELY (rtpsession == NULL)) - return NULL; + rtpsession = GST_RTP_SESSION (parent); GST_RTP_SESSION_LOCK (rtpsession); if (pad == rtpsession->recv_rtp_src) { @@ -1481,8 +1479,6 @@ gst_rtp_session_iterate_internal_links (GstPad * pad) gst_object_unref (otherpad); } - gst_object_unref (rtpsession); - return it; } diff --git a/gst/rtpmanager/gstrtpssrcdemux.c b/gst/rtpmanager/gstrtpssrcdemux.c index dee6927769..30e992d091 100644 --- a/gst/rtpmanager/gstrtpssrcdemux.c +++ b/gst/rtpmanager/gstrtpssrcdemux.c @@ -118,12 +118,12 @@ static GstFlowReturn gst_rtp_ssrc_demux_rtcp_chain (GstPad * pad, static gboolean gst_rtp_ssrc_demux_rtcp_sink_event (GstPad * pad, GstEvent * event); static GstIterator *gst_rtp_ssrc_demux_iterate_internal_links_sink (GstPad * - pad); + pad, GstObject * parent); /* srcpad stuff */ static gboolean gst_rtp_ssrc_demux_src_event (GstPad * pad, GstEvent * event); static GstIterator *gst_rtp_ssrc_demux_iterate_internal_links_src (GstPad * - pad); + pad, GstObject * parent); static gboolean gst_rtp_ssrc_demux_src_query (GstPad * pad, GstObject * parent, GstQuery * query); @@ -676,17 +676,14 @@ gst_rtp_ssrc_demux_src_event (GstPad * pad, GstEvent * event) } static GstIterator * -gst_rtp_ssrc_demux_iterate_internal_links_src (GstPad * pad) +gst_rtp_ssrc_demux_iterate_internal_links_src (GstPad * pad, GstObject * parent) { GstRtpSsrcDemux *demux; GstPad *otherpad = NULL; GstIterator *it = NULL; GSList *current; - demux = GST_RTP_SSRC_DEMUX (gst_pad_get_parent (pad)); - - if (!demux) - return NULL; + demux = GST_RTP_SSRC_DEMUX (parent); GST_PAD_LOCK (demux); for (current = demux->srcpads; current; current = g_slist_next (current)) { @@ -711,7 +708,6 @@ gst_rtp_ssrc_demux_iterate_internal_links_src (GstPad * pad) } GST_PAD_UNLOCK (demux); - gst_object_unref (demux); return it; } @@ -731,16 +727,14 @@ src_pad_compare_func (gconstpointer a, gconstpointer b) } static GstIterator * -gst_rtp_ssrc_demux_iterate_internal_links_sink (GstPad * pad) +gst_rtp_ssrc_demux_iterate_internal_links_sink (GstPad * pad, + GstObject * parent) { GstRtpSsrcDemux *demux; GstIterator *it = NULL; GValue gval = { 0, }; - demux = GST_RTP_SSRC_DEMUX (gst_pad_get_parent (pad)); - - if (!demux) - return NULL; + demux = GST_RTP_SSRC_DEMUX (parent); g_value_init (&gval, G_TYPE_STRING); if (pad == demux->rtp_sink) @@ -750,12 +744,10 @@ gst_rtp_ssrc_demux_iterate_internal_links_sink (GstPad * pad) else g_assert_not_reached (); - it = gst_element_iterate_src_pads (GST_ELEMENT (demux)); + it = gst_element_iterate_src_pads (GST_ELEMENT_CAST (demux)); it = gst_iterator_filter (it, src_pad_compare_func, &gval); - gst_object_unref (demux); - return it; }