omxbufferpool: return buffers to the pool instead of freeing them
authorJosep Torra <n770galaxy@gmail.com>
Mon, 24 Mar 2014 16:49:59 +0000 (17:49 +0100)
committerJulien Isorce <julien.isorce@collabora.co.uk>
Mon, 24 Mar 2014 18:20:51 +0000 (18:20 +0000)
We have to return the buffers back to the pool in when stopping to
not mess with the GstBufferPool accounting.
The OMX buffers will be freed when those won't be in charge of the
pool in the chained up call to 'stop'.
Fixes segfaults on finalize and pool not being properly deactivated.

https://bugzilla.gnome.org/show_bug.cgi?id=726337

omx/gstomxbufferpool.c

index 80bb83e..dfd5c62 100644 (file)
@@ -223,8 +223,8 @@ gst_omx_buffer_pool_stop (GstBufferPool * bpool)
    * GstBufferPool::free_buffer is not called while stopping the pool
    * (because the queue is empty) */
   for (i = 0; i < pool->buffers->len; i++)
-    gst_omx_buffer_pool_free_buffer (bpool, g_ptr_array_index (pool->buffers,
-            i));
+    GST_BUFFER_POOL_CLASS (gst_omx_buffer_pool_parent_class)->release_buffer
+        (bpool, g_ptr_array_index (pool->buffers, i));
 
   /* Remove any buffers that are there */
   g_ptr_array_set_size (pool->buffers, 0);