fsvalve: Ignore errors if dropping is set to true
[platform/upstream/gstreamer.git] / 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;