summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2015-06-19 17:40:28 -0700
committerLajos Molnar <lajos@google.com>2015-06-19 18:08:18 -0700
commite421a32aa696cd8abbf8fdc97cc8f37dbf372cac (patch)
tree2f0b96e90c447fcc480455e5733d2510b6c3078f /media
parentecf7bdb0c5a9914564f8a8c91ffc4bd24ebfb0ac (diff)
downloadframeworks_av-e421a32aa696cd8abbf8fdc97cc8f37dbf372cac.zip
frameworks_av-e421a32aa696cd8abbf8fdc97cc8f37dbf372cac.tar.gz
frameworks_av-e421a32aa696cd8abbf8fdc97cc8f37dbf372cac.tar.bz2
stagefright: allow state change while handling OMX message list
Bug: 21724210 Bug: 21925253 Change-Id: Id1c055ce611d4632ae13fbc69d79b65caf657a2a
Diffstat (limited to 'media')
-rw-r--r--media/libstagefright/ACodec.cpp9
1 files changed, 8 insertions, 1 deletions
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<AMessage> &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<AMessage> &msg) {
bool receivedRenderedEvents = false;
for (std::list<sp<AMessage>>::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) {