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 f441d14fad64e010cff81fa552aa49390e76a19c..580a03b51b9a125896973648fee8dab534616c5d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+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>
index 3986832c51a9311be406632466f22a89cb306efb..0874e94d1a4369579521210bfe700381133af82a 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;
 }