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.
This commit is contained in:
Sebastian Dröge 2011-11-17 13:33:35 -08:00
parent 8a5fbb876c
commit c144ebd054

View file

@ -1494,6 +1494,11 @@ gst_omx_port_set_enabled_unlocked (GstOMXPort * port, gboolean enabled)
port->enabled_changed = FALSE; 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); g_mutex_unlock (port->port_lock);
if (enabled) if (enabled)
err = err =
@ -1579,6 +1584,8 @@ gst_omx_port_set_enabled_unlocked (GstOMXPort * port, gboolean enabled)
&port->port_def); &port->port_def);
} }
port->flushing = FALSE;
if (!signalled) { if (!signalled) {
GST_ERROR_OBJECT (comp->parent, GST_ERROR_OBJECT (comp->parent,
"Timeout waiting for port %u to be %s", port->index, "Timeout waiting for port %u to be %s", port->index,
@ -1631,6 +1638,7 @@ error:
* set_last_error() needs all port locks. * set_last_error() needs all port locks.
* This is safe here because we're just going * This is safe here because we're just going
* to error out anyway */ * to error out anyway */
port->flushing = FALSE;
g_mutex_unlock (port->port_lock); g_mutex_unlock (port->port_lock);
gst_omx_component_set_last_error (comp, err); gst_omx_component_set_last_error (comp, err);
g_mutex_lock (port->port_lock); g_mutex_lock (port->port_lock);