From 06b1c78adeef13ac30f486d09a16ff775d355448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Cr=C3=AAte?= Date: Sat, 13 Dec 2008 00:31:45 -0500 Subject: [MOVED FROM GST-P-FARSIGHT] Ignore errors if dropping is set to true --- gst/valve/gstvalve.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gst/valve/gstvalve.c b/gst/valve/gstvalve.c index ecd0f7dc..a61e009e 100644 --- a/gst/valve/gstvalve.c +++ b/gst/valve/gstvalve.c @@ -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; -- cgit v1.2.1