omx: always consider component in 'invalid' state when an error occured
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Mon, 7 May 2018 09:59:08 +0000 (11:59 +0200)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 8 Jun 2018 07:36:56 +0000 (09:36 +0200)
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

omx/gstomx.c

index b16cf50..6276fea 100644 (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) {