diff options
author | Mathias Agopian <mathias@google.com> | 2011-12-02 16:11:19 -0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2011-12-02 16:11:19 -0800 |
commit | 222893641184014306a26a9d58690c8415181d12 (patch) | |
tree | 9bf310f82e0ae88d10eafe612cc3eb10b2b60b2d | |
parent | 54703d8b2bd323b21084614cee5063c157a82192 (diff) | |
download | frameworks_native-222893641184014306a26a9d58690c8415181d12.zip frameworks_native-222893641184014306a26a9d58690c8415181d12.tar.gz frameworks_native-222893641184014306a26a9d58690c8415181d12.tar.bz2 |
fix an issue where updates could starve transactions
Bug: 5700586
Change-Id: Iaa4adc1a6aea1db6e2943efe4caca1f6cbebfa72
-rw-r--r-- | services/surfaceflinger/MessageQueue.cpp | 10 | ||||
-rw-r--r-- | services/surfaceflinger/MessageQueue.h | 1 |
2 files changed, 2 insertions, 9 deletions
diff --git a/services/surfaceflinger/MessageQueue.cpp b/services/surfaceflinger/MessageQueue.cpp index 1846ccb..fdde75c 100644 --- a/services/surfaceflinger/MessageQueue.cpp +++ b/services/surfaceflinger/MessageQueue.cpp @@ -44,8 +44,7 @@ void MessageBase::handleMessage(const Message&) { // --------------------------------------------------------------------------- MessageQueue::MessageQueue() - : mLooper(new Looper(true)), - mInvalidatePending(0) + : mLooper(new Looper(true)) { } @@ -54,17 +53,13 @@ MessageQueue::~MessageQueue() { void MessageQueue::waitMessage() { do { - // handle invalidate events first - if (android_atomic_and(0, &mInvalidatePending) != 0) - break; - IPCThreadState::self()->flushCommands(); int32_t ret = mLooper->pollOnce(-1); switch (ret) { case ALOOPER_POLL_WAKE: // we got woken-up there is work to do in the main loop - continue; + return; case ALOOPER_POLL_CALLBACK: // callback was handled, loop again @@ -99,7 +94,6 @@ status_t MessageQueue::postMessage( } status_t MessageQueue::invalidate() { - android_atomic_or(1, &mInvalidatePending); mLooper->wake(); return NO_ERROR; } diff --git a/services/surfaceflinger/MessageQueue.h b/services/surfaceflinger/MessageQueue.h index 25030a6..775400f 100644 --- a/services/surfaceflinger/MessageQueue.h +++ b/services/surfaceflinger/MessageQueue.h @@ -55,7 +55,6 @@ private: class MessageQueue { sp<Looper> mLooper; - volatile int32_t mInvalidatePending; public: MessageQueue(); |