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

Commit e3f9cc67 authored by Stephen Hines's avatar Stephen Hines
Browse files

Don't wait forever if there are no commands to execute.

BUG=5614887

This fixes a timing issue where we could calculate a delay of 0 (indicating
wait forever) when we have no pending commands to actually execute. In such
cases, we should just break out of the playback loop.

This also fixes a small issue with returning whether or not to redraw.

Change-Id: Id1e481679341773256b7287062c68925e2bc8f9e
parent 109116bb
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -124,7 +124,6 @@ bool ThreadIO::playCoreCommands(Context *con, bool waitForCommand, uint64_t time
    while (!mToCore.isEmpty() || waitForCommand) {
        uint32_t cmdID = 0;
        uint32_t cmdSize = 0;
        ret = true;
        if (con->props.mLogTimes) {
            con->timerSet(Context::RS_TIMER_IDLE);
        }
@@ -136,11 +135,17 @@ bool ThreadIO::playCoreCommands(Context *con, bool waitForCommand, uint64_t time
                delay = 0;
            }
        }

        if (delay == 0 && timeToWait != 0 && mToCore.isEmpty()) {
            break;
        }

        const void * data = mToCore.get(&cmdID, &cmdSize, delay);
        if (!cmdSize) {
            // exception or timeout occurred.
            return false;
            break;
        }
        ret = true;
        if (con->props.mLogTimes) {
            con->timerSet(Context::RS_TIMER_INTERNAL);
        }