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

Commit 42dccd45 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by The Android Automerger
Browse files

Hack to get devices booting again.

If we try scheduling a pass before the system is ready, record a
pending event and dispatch once we're actually ready.

Bug: 26863668
Change-Id: I028285383c8bbe8b653aeaa7544eefe3d41277bc
(cherry picked from commit 538c11cf)
parent b8bd3024
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -145,6 +145,8 @@ public class UsageStatsService extends SystemService implements
    private boolean mScreenOn;
    private long mLastAppIdleParoledTime;

    private volatile boolean mPendingOneTimeCheckIdleStates;

    long mScreenOnTime;
    long mLastScreenOnEventRealtime;

@@ -221,6 +223,10 @@ public class UsageStatsService extends SystemService implements
            synchronized (this) {
                updateDisplayLocked();
            }

            if (mPendingOneTimeCheckIdleStates) {
                postOneTimeCheckIdleStates();
            }
        } else if (phase == PHASE_BOOT_COMPLETED) {
            setAppIdleParoled(getContext().getSystemService(BatteryManager.class).isCharging());
        }
@@ -368,7 +374,13 @@ public class UsageStatsService extends SystemService implements
     * scheduling a series of repeating checkIdleStates each time we fired off one.
     */
    void postOneTimeCheckIdleStates() {
        if (mDeviceIdleController == null) {
            // Not booted yet; wait for it!
            mPendingOneTimeCheckIdleStates = true;
        } else {
            mHandler.sendEmptyMessage(MSG_ONE_TIME_CHECK_IDLE_STATES);
            mPendingOneTimeCheckIdleStates = false;
        }
    }

    /** Check all running users' or specified user's apps to see if they enter an idle state. */