From c144ebd054611777ae9314733ff0d5609fda4a4e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 17 Nov 2011 13:33:35 -0800 Subject: [PATCH] omx: Enabling/disabling a port is also like flushing The component returns all buffers to us and shouldn't get any new buffers passed anymore. --- omx/gstomx.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/omx/gstomx.c b/omx/gstomx.c index 9d899ef..d2f054c 100644 --- a/omx/gstomx.c +++ b/omx/gstomx.c @@ -1494,6 +1494,11 @@ gst_omx_port_set_enabled_unlocked (GstOMXPort * port, gboolean enabled) port->enabled_changed = FALSE; + /* This is also like flushing, i.e. all buffers are returned + * by the component and no new buffers should be passed to + * the component anymore */ + port->flushing = TRUE; + g_mutex_unlock (port->port_lock); if (enabled) err = @@ -1579,6 +1584,8 @@ gst_omx_port_set_enabled_unlocked (GstOMXPort * port, gboolean enabled) &port->port_def); } + port->flushing = FALSE; + if (!signalled) { GST_ERROR_OBJECT (comp->parent, "Timeout waiting for port %u to be %s", port->index, @@ -1631,6 +1638,7 @@ error: * set_last_error() needs all port locks. * This is safe here because we're just going * to error out anyway */ + port->flushing = FALSE; g_mutex_unlock (port->port_lock); gst_omx_component_set_last_error (comp, err); g_mutex_lock (port->port_lock); -- 2.7.4