summaryrefslogtreecommitdiffstats
path: root/gst/valve
diff options
context:
space:
mode:
authorOlivier Crete <olivier.crete@collabora.co.uk>2007-12-19 20:32:30 +0000
committerEdward Hervey <bilboed@bilboed.com>2009-02-17 19:29:59 +0100
commit689114034021b1d64e8fc54dad1f07d1b24f3f0c (patch)
tree44320f133abe59ea98e49fbf438c3d6a3c6d0c6a /gst/valve
parentecc7dbcc772ce6a4f098c1723e8f4304a408eaf8 (diff)
downloadgst-plugins-bad-689114034021b1d64e8fc54dad1f07d1b24f3f0c.tar.gz
gst-plugins-bad-689114034021b1d64e8fc54dad1f07d1b24f3f0c.tar.bz2
gst-plugins-bad-689114034021b1d64e8fc54dad1f07d1b24f3f0c.zip
[MOVED FROM GST-P-FARSIGHT] Dont hold the object lock while calling base alloc function
20071219203230-3e2dc-6519175d8d81496515b2d9060ac316650560f691.gz
Diffstat (limited to 'gst/valve')
-rw-r--r--gst/valve/gstvalve.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gst/valve/gstvalve.c b/gst/valve/gstvalve.c
index d057b027..a730ca1a 100644
--- a/gst/valve/gstvalve.c
+++ b/gst/valve/gstvalve.c
@@ -273,15 +273,17 @@ gst_valve_buffer_alloc (GstPad * pad, guint64 offset, guint size,
GST_OBJECT_LOCK (GST_OBJECT (valve));
if (valve->drop)
{
+ GST_OBJECT_UNLOCK (GST_OBJECT (valve));
*buf = gst_buffer_new_and_alloc (size);
GST_BUFFER_OFFSET (*buf) = offset;
gst_buffer_set_caps (*buf, caps);
}
else
{
- ret = valve->original_allocfunc (pad, offset, size, caps, buf);
+ GstPadBufferAllocFunction allocfunc = valve->original_allocfunc;
+ GST_OBJECT_UNLOCK (GST_OBJECT (valve));
+ ret = allocfunc (pad, offset, size, caps, buf);
}
- GST_OBJECT_UNLOCK (GST_OBJECT (valve));
gst_object_unref (valve);