rtp: Unref events if the parent element disappeared or has no event handler implemented
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 8 Apr 2011 13:10:02 +0000 (15:10 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 8 Apr 2011 13:10:02 +0000 (15:10 +0200)
gst-libs/gst/rtp/gstbasertpdepayload.c
gst-libs/gst/rtp/gstbasertppayload.c

index 94ca7ed..978a262 100644 (file)
@@ -482,12 +482,16 @@ gst_base_rtp_depayload_handle_sink_event (GstPad * pad, GstEvent * event)
   GstBaseRTPDepayloadClass *bclass;
 
   filter = GST_BASE_RTP_DEPAYLOAD (gst_pad_get_parent (pad));
-  if (G_UNLIKELY (filter == NULL))
+  if (G_UNLIKELY (filter == NULL)) {
+    gst_event_unref (event);
     return FALSE;
+  }
 
   bclass = GST_BASE_RTP_DEPAYLOAD_GET_CLASS (filter);
   if (bclass->handle_event)
     res = bclass->handle_event (filter, event);
+  else
+    gst_event_unref (event);
 
   gst_object_unref (filter);
   return res;
index a04e308..060e4e0 100644 (file)
@@ -383,8 +383,10 @@ gst_basertppayload_event (GstPad * pad, GstEvent * event)
   gboolean res;
 
   basertppayload = GST_BASE_RTP_PAYLOAD (gst_pad_get_parent (pad));
-  if (G_UNLIKELY (basertppayload == NULL))
+  if (G_UNLIKELY (basertppayload == NULL)) {
+    gst_event_unref (event);
     return FALSE;
+  }
   basertppayload_class = GST_BASE_RTP_PAYLOAD_GET_CLASS (basertppayload);
 
   if (basertppayload_class->handle_event) {