diff options
author | Olivier Crete <olivier.crete@collabora.co.uk> | 2007-12-19 20:32:30 +0000 |
---|---|---|
committer | Edward Hervey <bilboed@bilboed.com> | 2009-02-17 19:29:59 +0100 |
commit | 689114034021b1d64e8fc54dad1f07d1b24f3f0c (patch) | |
tree | 44320f133abe59ea98e49fbf438c3d6a3c6d0c6a /gst | |
parent | ecc7dbcc772ce6a4f098c1723e8f4304a408eaf8 (diff) | |
download | gst-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')
-rw-r--r-- | gst/valve/gstvalve.c | 6 |
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); |