omxbufferpool: reference the OMX component
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 24 Jul 2018 13:14:31 +0000 (15:14 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 30 Aug 2018 08:59:30 +0000 (10:59 +0200)
Now that the pool is responsible of freeing the OMX buffers, we need to
ensure that the OMX component stay alive while the pool is as we rely on
the component to free the buffers.
The GstOMXPort is owned by the component so no need to ref this one.

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

omx/gstomxbufferpool.c

index 995687b..f2e6300 100644 (file)
@@ -631,6 +631,8 @@ gst_omx_buffer_pool_finalize (GObject * object)
     gst_caps_unref (pool->caps);
   pool->caps = NULL;
 
+  g_clear_pointer (&pool->component, gst_omx_component_unref);
+
   G_OBJECT_CLASS (gst_omx_buffer_pool_parent_class)->finalize (object);
 }
 
@@ -667,7 +669,7 @@ gst_omx_buffer_pool_new (GstElement * element, GstOMXComponent * component,
 
   pool = g_object_new (gst_omx_buffer_pool_get_type (), NULL);
   pool->element = gst_object_ref (element);
-  pool->component = component;
+  pool->component = gst_omx_component_ref (component);
   pool->port = port;
   pool->output_mode = output_mode;