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

Commit 4e116cc6 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by The Android Automerger
Browse files

Fix issue #17740687: Device does not boot after flashing LMP dev TOT(1478825) build.

There was a path through idle where we could clear mBooting but not set
mBooted, so we would no longer start activities.  This is probably happening
because if you start a user or userdebug build with the device plugged in
to adb, the system early on starts the USB security dialog, before home is
started.  If that goes idle first, we will end up in the case where we
clear booting (because something went idle) but not set booted (because it
was not home that went idle).

Change this so that we always set booted when clearing booting.

Change-Id: I40053710eefa939315aeb9475ecdd2e8a87351ff
parent e65c77e9
Loading
Loading
Loading
Loading
+7 −6
Original line number Original line Diff line number Diff line
@@ -2243,11 +2243,15 @@ public final class ActivityStackSupervisor implements DisplayListener {
            r.idle = true;
            r.idle = true;


            //Slog.i(TAG, "IDLE: mBooted=" + mBooted + ", fromTimeout=" + fromTimeout);
            //Slog.i(TAG, "IDLE: mBooted=" + mBooted + ", fromTimeout=" + fromTimeout);
            if (!mService.mBooted && isFrontStack(r.task.stack)) {
            if (isFrontStack(r.task.stack) || fromTimeout) {
                booting = mService.mBooting;
                mService.mBooting = false;
                if (!mService.mBooted) {
                    mService.mBooted = true;
                    mService.mBooted = true;
                    enableScreen = true;
                    enableScreen = true;
                }
                }
            }
            }
        }


        if (allResumedActivitiesIdle()) {
        if (allResumedActivitiesIdle()) {
            if (r != null) {
            if (r != null) {
@@ -2273,9 +2277,6 @@ public final class ActivityStackSupervisor implements DisplayListener {
            mFinishingActivities.clear();
            mFinishingActivities.clear();
        }
        }


        booting = mService.mBooting;
        mService.mBooting = false;

        if (mStartingUsers.size() > 0) {
        if (mStartingUsers.size() > 0) {
            startingUsers = new ArrayList<UserStartedState>(mStartingUsers);
            startingUsers = new ArrayList<UserStartedState>(mStartingUsers);
            mStartingUsers.clear();
            mStartingUsers.clear();