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

Commit 230381c3 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "[AChoreographer] Resolves a deadlock" into rvc-dev am: a821321b

Change-Id: If7bdf49dc4a80e8cf7324bf58c9c06e37c535f53
parents 78f55b90 a821321b
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -185,9 +185,18 @@ void Choreographer::unregisterRefreshRateCallback(AChoreographer_refreshRateCall
}

void Choreographer::scheduleCallbacks() {
    const nsecs_t now = systemTime(SYSTEM_TIME_MONOTONIC);
    nsecs_t dueTime;
    {
        AutoMutex _{mLock};
    nsecs_t now = systemTime(SYSTEM_TIME_MONOTONIC);
    if (mFrameCallbacks.top().dueTime <= now) {
        // If there are no pending callbacks then don't schedule a vsync
        if (mFrameCallbacks.empty()) {
            return;
        }
        dueTime = mFrameCallbacks.top().dueTime;
    }

    if (dueTime <= now) {
        ALOGV("choreographer %p ~ scheduling vsync", this);
        scheduleVsync();
        return;