Loading services/surfaceflinger/MessageQueue.cpp +8 −6 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ void MessageBase::handleMessage(const Message&) { // --------------------------------------------------------------------------- MessageQueue::MessageQueue() : mLooper(new Looper(true)) : mLooper(new Looper(true)), mWorkPending(0) { } Loading @@ -58,11 +58,11 @@ void MessageQueue::waitMessage() { 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 return; case ALOOPER_POLL_CALLBACK: // callback was handled, loop again // callback and/or wake if (android_atomic_and(0, &mWorkPending)) { return; } continue; case ALOOPER_POLL_TIMEOUT: Loading Loading @@ -94,7 +94,9 @@ status_t MessageQueue::postMessage( } status_t MessageQueue::invalidate() { if (android_atomic_or(1, &mWorkPending) == 0) { mLooper->wake(); } return NO_ERROR; } Loading services/surfaceflinger/MessageQueue.h +1 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ private: class MessageQueue { sp<Looper> mLooper; volatile int32_t mWorkPending; public: MessageQueue(); Loading Loading
services/surfaceflinger/MessageQueue.cpp +8 −6 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ void MessageBase::handleMessage(const Message&) { // --------------------------------------------------------------------------- MessageQueue::MessageQueue() : mLooper(new Looper(true)) : mLooper(new Looper(true)), mWorkPending(0) { } Loading @@ -58,11 +58,11 @@ void MessageQueue::waitMessage() { 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 return; case ALOOPER_POLL_CALLBACK: // callback was handled, loop again // callback and/or wake if (android_atomic_and(0, &mWorkPending)) { return; } continue; case ALOOPER_POLL_TIMEOUT: Loading Loading @@ -94,7 +94,9 @@ status_t MessageQueue::postMessage( } status_t MessageQueue::invalidate() { if (android_atomic_or(1, &mWorkPending) == 0) { mLooper->wake(); } return NO_ERROR; } Loading
services/surfaceflinger/MessageQueue.h +1 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ private: class MessageQueue { sp<Looper> mLooper; volatile int32_t mWorkPending; public: MessageQueue(); Loading