fix an issue where updates could starve transactions

Bug: 5700586
Change-Id: Iaa4adc1a6aea1db6e2943efe4caca1f6cbebfa72
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 @@
 // ---------------------------------------------------------------------------
 
 MessageQueue::MessageQueue()
-    : mLooper(new Looper(true)),
-      mInvalidatePending(0)
+    : mLooper(new Looper(true))
 {
 }
 
@@ -54,17 +53,13 @@
 
 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::invalidate() {
-    android_atomic_or(1, &mInvalidatePending);
     mLooper->wake();
     return NO_ERROR;
 }