Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22289364 authored by Mathias Agopian's avatar Mathias Agopian
Browse files

fix an issue where updates could starve transactions

Bug: 5700586
Change-Id: Iaa4adc1a6aea1db6e2943efe4caca1f6cbebfa72
parent 54703d8b
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -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;
}
+0 −1
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ private:

class MessageQueue {
    sp<Looper> mLooper;
    volatile int32_t mInvalidatePending;

public:
    MessageQueue();