fsvalve: Ignore errors if dropping is set to true
authorOlivier Crête <olivier.crete@collabora.co.uk>
Sat, 13 Dec 2008 05:31:45 +0000 (00:31 -0500)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 31 Dec 2010 00:51:10 +0000 (00:51 +0000)
plugins/elements/gstvalve.c

index ecd0f7d..a61e009 100644 (file)
@@ -204,6 +204,12 @@ gst_valve_chain (GstPad *pad, GstBuffer *buffer)
   else
     ret = gst_pad_push (valve->srcpad, buffer);
 
+
+  GST_OBJECT_LOCK (GST_OBJECT (valve));
+  if (valve->drop)
+    ret = GST_FLOW_OK;
+  GST_OBJECT_UNLOCK (GST_OBJECT (valve));
+
   gst_object_unref (valve);
 
   return ret;
@@ -226,6 +232,11 @@ gst_valve_event (GstPad *pad, GstEvent *event)
   else
     ret = gst_pad_push_event (valve->srcpad, event);
 
+  GST_OBJECT_LOCK (GST_OBJECT (valve));
+  if (valve->drop)
+    ret = TRUE;
+  GST_OBJECT_UNLOCK (GST_OBJECT (valve));
+
   gst_object_unref (valve);
   return ret;
 }
@@ -247,6 +258,11 @@ gst_valve_buffer_alloc (GstPad * pad, guint64 offset, guint size,
   else
     ret = gst_pad_alloc_buffer (valve->srcpad, offset, size, caps, buf);
 
+  GST_OBJECT_LOCK (GST_OBJECT (valve));
+  if (valve->drop)
+    ret = GST_FLOW_OK;
+  GST_OBJECT_UNLOCK (GST_OBJECT (valve));
+
   gst_object_unref (valve);
 
   return ret;