omx: always consider component in 'invalid' state when an error occured

gst_omx_component_get_state() used to early return if there was no
pending state change. So if the component raised an error it wasn't
considered in the invalid state until the next requested state change.

Fix this by checking first if we received an error.

https://bugzilla.gnome.org/show_bug.cgi?id=795874
This commit is contained in:
Guillaume Desmottes 2018-05-07 11:59:08 +02:00
parent ebcadd9984
commit 3498f81d1f

View file

@ -972,10 +972,6 @@ gst_omx_component_get_state (GstOMXComponent * comp, GstClockTime timeout)
gst_omx_component_handle_messages (comp);
ret = comp->state;
if (comp->pending_state == OMX_StateInvalid)
goto done;
if (comp->last_error != OMX_ErrorNone) {
GST_ERROR_OBJECT (comp->parent, "Component %s in error state: %s (0x%08x)",
comp->name, gst_omx_error_to_string (comp->last_error),
@ -984,6 +980,10 @@ gst_omx_component_get_state (GstOMXComponent * comp, GstClockTime timeout)
goto done;
}
ret = comp->state;
if (comp->pending_state == OMX_StateInvalid)
goto done;
while (signalled && comp->last_error == OMX_ErrorNone
&& comp->pending_state != OMX_StateInvalid) {