libs/gst/base/gstbasesink.c: Only send upstream events upstream. Fixes #498746.
authorWim Taymans <wim.taymans@gmail.com>
Wed, 21 Nov 2007 13:47:52 +0000 (13:47 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 21 Nov 2007 13:47:52 +0000 (13:47 +0000)
Original commit message from CVS:
* libs/gst/base/gstbasesink.c: (gst_base_sink_send_event):
Only send upstream events upstream. Fixes #498746.

ChangeLog
libs/gst/base/gstbasesink.c

index f441d14..580a03b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2007-11-21  Wim Taymans  <wim.taymans@gmail.com>
 
+       * libs/gst/base/gstbasesink.c: (gst_base_sink_send_event):
+       Only send upstream events upstream. Fixes #498746.
+
+2007-11-21  Wim Taymans  <wim.taymans@gmail.com>
+
        Patch by: Laurent Glayal <spglegle at yahoo dot fr>
 
        * plugins/elements/gstidentity.c: (gst_identity_class_init),
index 3986832..0874e94 100644 (file)
@@ -2927,7 +2927,10 @@ gst_base_sink_send_event (GstElement * element, GstEvent * event)
 {
   GstPad *pad;
   GstBaseSink *basesink = GST_BASE_SINK (element);
-  gboolean forward = TRUE, result = TRUE;
+  gboolean forward, result = TRUE;
+
+  /* only push UPSTREAM events upstream */
+  forward = GST_EVENT_IS_UPSTREAM (event);
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_LATENCY:
@@ -2944,7 +2947,6 @@ gst_base_sink_send_event (GstElement * element, GstEvent * event)
 
       /* don't forward, yet */
       forward = FALSE;
-      gst_event_unref (event);
       break;
     }
     default:
@@ -2959,6 +2961,9 @@ gst_base_sink_send_event (GstElement * element, GstEvent * event)
     result = gst_pad_push_event (pad, event);
 
     gst_object_unref (pad);
+  } else {
+    /* not forwarded, unref the event */
+    gst_event_unref (event);
   }
   return result;
 }