summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-12-02 16:11:19 -0800
committerMathias Agopian <mathias@google.com>2011-12-02 16:11:19 -0800
commit222893641184014306a26a9d58690c8415181d12 (patch)
tree9bf310f82e0ae88d10eafe612cc3eb10b2b60b2d
parent54703d8b2bd323b21084614cee5063c157a82192 (diff)
downloadframeworks_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.cpp10
-rw-r--r--services/surfaceflinger/MessageQueue.h1
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();