rtp: Unref events if the parent element disappeared
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 8 Apr 2011 13:20:51 +0000 (15:20 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 8 Apr 2011 13:20:51 +0000 (15:20 +0200)
gst/rtpmanager/gstrtpjitterbuffer.c
gst/rtpmanager/gstrtpptdemux.c
gst/rtpmanager/gstrtpsession.c
gst/rtpmanager/gstrtpssrcdemux.c

index 499acbdfce054d760fac2d59d2a11a72d89e60c7..6bb50acbf5f720d7ae6869fdb4159dbc907c428a 100644 (file)
@@ -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));
index 07f99688e2ed87b2f24aae11cdb50573671fc4c4..3c0004dbbc287c2f88b4e8a2a17f549a129a5bc5 100644 (file)
@@ -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:
index a81df43bfea37c23d7dd3a440ec5e51b043865af..659bfad3bc87a2f2dc0bdc154d191a89a384b6a4 100644 (file)
@@ -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:
index 5804ac7737d4fd7404054c8ba87e16260eea7165..9ce30eb49aaf561f1b066266b34d07465d00056d 100644 (file)
@@ -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: