summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/foundation
diff options
context:
space:
mode:
authorRonghua Wu <ronghuawu@google.com>2015-10-26 10:17:37 -0700
committerThe Android Automerger <android-build@google.com>2015-11-02 13:20:45 -0800
commit6c7a59a1a97553eed31351762439e70afcd840de (patch)
treeffb361f817132e8bc76d63a9905c0b7ca8c0da79 /media/libstagefright/foundation
parent28323c3d9a6dff48c480c50a358d9bd4fdeed407 (diff)
downloadframeworks_av-6c7a59a1a97553eed31351762439e70afcd840de.zip
frameworks_av-6c7a59a1a97553eed31351762439e70afcd840de.tar.gz
frameworks_av-6c7a59a1a97553eed31351762439e70afcd840de.tar.bz2
ALooper::awaitResponse gets reply and returns immediately if the looper is stopped.
Bug: 25088488 Change-Id: Id33d5d75f1173db52d00f4ff71d4c2c4f27f72f5
Diffstat (limited to 'media/libstagefright/foundation')
-rw-r--r--media/libstagefright/foundation/ALooper.cpp20
1 files changed, 4 insertions, 16 deletions
diff --git a/media/libstagefright/foundation/ALooper.cpp b/media/libstagefright/foundation/ALooper.cpp
index 5c2e9f9..9921636 100644
--- a/media/libstagefright/foundation/ALooper.cpp
+++ b/media/libstagefright/foundation/ALooper.cpp
@@ -234,31 +234,19 @@ sp<AReplyToken> ALooper::createReplyToken() {
// to be called by AMessage::postAndAwaitResponse only
status_t ALooper::awaitResponse(const sp<AReplyToken> &replyToken, sp<AMessage> *response) {
- {
- Mutex::Autolock autoLock(mLock);
- if (mThread == NULL) {
- return -ENOENT;
- }
- }
-
// return status in case we want to handle an interrupted wait
Mutex::Autolock autoLock(mRepliesLock);
CHECK(replyToken != NULL);
- bool gotReply;
- bool shouldContinue = true;
- while (!(gotReply = replyToken->retrieveReply(response)) && shouldContinue) {
- mRepliesCondition.wait(mRepliesLock);
-
+ while (!replyToken->retrieveReply(response)) {
{
Mutex::Autolock autoLock(mLock);
if (mThread == NULL) {
- shouldContinue = false;
- // continue and try to get potential reply one more time before break the loop
+ return -ENOENT;
}
}
+ mRepliesCondition.wait(mRepliesLock);
}
-
- return gotReply ? OK : -ENOENT;
+ return OK;
}
status_t ALooper::postReply(const sp<AReplyToken> &replyToken, const sp<AMessage> &reply) {