From 9f4557ed0b29c85df1f2219408bad91ae4e29cbb Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Mon, 8 Feb 2010 12:54:40 -0800 Subject: [PATCH] During shutdown, don't loop forever on a state transition to OMX_StateInvalid. related-to-bug: 2420917 --- media/libstagefright/omx/OMXNodeInstance.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/media/libstagefright/omx/OMXNodeInstance.cpp b/media/libstagefright/omx/OMXNodeInstance.cpp index 70c6a58c948af..2458d2a9336af 100644 --- a/media/libstagefright/omx/OMXNodeInstance.cpp +++ b/media/libstagefright/omx/OMXNodeInstance.cpp @@ -129,11 +129,16 @@ status_t OMXNodeInstance::freeNode(OMXMaster *master) { sendCommand(OMX_CommandStateSet, OMX_StateIdle); OMX_ERRORTYPE err; while ((err = OMX_GetState(mHandle, &state)) == OMX_ErrorNone - && state != OMX_StateIdle) { + && state != OMX_StateIdle + && state != OMX_StateInvalid) { usleep(100000); } CHECK_EQ(err, OMX_ErrorNone); + if (state == OMX_StateInvalid) { + break; + } + // fall through } @@ -146,7 +151,8 @@ status_t OMXNodeInstance::freeNode(OMXMaster *master) { OMX_ERRORTYPE err; while ((err = OMX_GetState(mHandle, &state)) == OMX_ErrorNone - && state != OMX_StateLoaded) { + && state != OMX_StateLoaded + && state != OMX_StateInvalid) { LOGV("waiting for Loaded state..."); usleep(100000); }