From 31af4fe33e52e814e5fbc91fda4de9ce90c8d7aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 8 Apr 2011 15:20:51 +0200 Subject: [PATCH] rtp: Unref events if the parent element disappeared --- gst/rtpmanager/gstrtpjitterbuffer.c | 4 +++- gst/rtpmanager/gstrtpptdemux.c | 4 +++- gst/rtpmanager/gstrtpsession.c | 12 ++++++++++-- gst/rtpmanager/gstrtpssrcdemux.c | 4 +++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index 499acbdfce..6bb50acbf5 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -1008,8 +1008,10 @@ gst_rtp_jitter_buffer_src_event (GstPad * pad, GstEvent * event) GstRtpJitterBufferPrivate *priv; jitterbuffer = GST_RTP_JITTER_BUFFER (gst_pad_get_parent (pad)); - if (G_UNLIKELY (jitterbuffer == NULL)) + if (G_UNLIKELY (jitterbuffer == NULL)) { + gst_event_unref (event); return FALSE; + } priv = jitterbuffer->priv; GST_DEBUG_OBJECT (jitterbuffer, "received %s", GST_EVENT_TYPE_NAME (event)); diff --git a/gst/rtpmanager/gstrtpptdemux.c b/gst/rtpmanager/gstrtpptdemux.c index 07f99688e2..3c0004dbbc 100644 --- a/gst/rtpmanager/gstrtpptdemux.c +++ b/gst/rtpmanager/gstrtpptdemux.c @@ -434,8 +434,10 @@ gst_rtp_pt_demux_sink_event (GstPad * pad, GstEvent * event) gboolean res = FALSE; rtpdemux = GST_RTP_PT_DEMUX (gst_pad_get_parent (pad)); - if (G_UNLIKELY (rtpdemux == NULL)) + if (G_UNLIKELY (rtpdemux == NULL)) { + gst_event_unref (event); return FALSE; + } switch (GST_EVENT_TYPE (event)) { case GST_EVENT_CUSTOM_DOWNSTREAM: diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index a81df43bfe..659bfad3bc 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -1325,8 +1325,10 @@ gst_rtp_session_event_recv_rtp_sink (GstPad * pad, GstEvent * event) gboolean ret = FALSE; rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad)); - if (G_UNLIKELY (rtpsession == NULL)) + if (G_UNLIKELY (rtpsession == NULL)) { + gst_event_unref (event); return FALSE; + } GST_DEBUG_OBJECT (rtpsession, "received event %s", GST_EVENT_TYPE_NAME (event)); @@ -1434,6 +1436,10 @@ gst_rtp_session_event_recv_rtp_src (GstPad * pad, GstEvent * event) guint pt; rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad)); + if (G_UNLIKELY (rtpsession == NULL)) { + gst_event_unref (event); + return FALSE; + } switch (GST_EVENT_TYPE (event)) { case GST_EVENT_CUSTOM_UPSTREAM: @@ -1647,8 +1653,10 @@ gst_rtp_session_event_send_rtcp_src (GstPad * pad, GstEvent * event) GST_DEBUG_OBJECT (rtpsession, "received EVENT"); rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad)); - if (G_UNLIKELY (rtpsession == NULL)) + if (G_UNLIKELY (rtpsession == NULL)) { + gst_event_unref (event); return FALSE; + } switch (GST_EVENT_TYPE (event)) { case GST_EVENT_SEEK: diff --git a/gst/rtpmanager/gstrtpssrcdemux.c b/gst/rtpmanager/gstrtpssrcdemux.c index 5804ac7737..9ce30eb49a 100644 --- a/gst/rtpmanager/gstrtpssrcdemux.c +++ b/gst/rtpmanager/gstrtpssrcdemux.c @@ -420,8 +420,10 @@ gst_rtp_ssrc_demux_sink_event (GstPad * pad, GstEvent * event) gboolean res = FALSE; demux = GST_RTP_SSRC_DEMUX (gst_pad_get_parent (pad)); - if (G_UNLIKELY (demux == NULL)) + if (G_UNLIKELY (demux == NULL)) { + gst_event_unref (event); return FALSE; + } switch (GST_EVENT_TYPE (event)) { case GST_EVENT_FLUSH_STOP: