From e421a32aa696cd8abbf8fdc97cc8f37dbf372cac Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Fri, 19 Jun 2015 17:40:28 -0700 Subject: stagefright: allow state change while handling OMX message list Bug: 21724210 Bug: 21925253 Change-Id: Id1c055ce611d4632ae13fbc69d79b65caf657a2a --- media/libstagefright/ACodec.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'media') diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp index 527e9cd..73517b7 100644 --- a/media/libstagefright/ACodec.cpp +++ b/media/libstagefright/ACodec.cpp @@ -4506,6 +4506,12 @@ bool ACodec::BaseState::onMessageReceived(const sp &msg) { return checkOMXMessage(msg) ? onOMXMessageList(msg) : true; } + case ACodec::kWhatOMXMessageItem: + { + // no need to check as we already did it for kWhatOMXMessageList + return onOMXMessage(msg); + } + case ACodec::kWhatOMXMessage: { return checkOMXMessage(msg) ? onOMXMessage(msg) : true; @@ -4593,7 +4599,8 @@ bool ACodec::BaseState::onOMXMessageList(const sp &msg) { bool receivedRenderedEvents = false; for (std::list>::const_iterator it = msgList->getList().cbegin(); it != msgList->getList().cend(); ++it) { - onOMXMessage(*it); + (*it)->setWhat(ACodec::kWhatOMXMessageItem); + mCodec->handleMessage(*it); int32_t type; CHECK((*it)->findInt32("type", &type)); if (type == omx_message::FRAME_RENDERED) { -- cgit v1.1