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

Commit d6c699ae authored by Louis Chang's avatar Louis Chang Committed by Presubmit Automerger Backend
Browse files

[automerge] Prevents activity being stopped while folding/unfolding device 2p: fc8087ce

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22779400

Bug: 271098735
Change-Id: I3cff51039672bc448d8c67e4a60b20f65a6f482d
Merged-In: I687f35f4989f9e23276451c9b3a3ce8578e64280
parents ba307234 fc8087ce
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2096,14 +2096,14 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                && !mScreenOffBecauseOfProximity) {
            setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF);
            unblockScreenOn();
            mWindowManagerPolicy.screenTurnedOff(mDisplayId);
            mWindowManagerPolicy.screenTurnedOff(mDisplayId, mIsInTransition);
        } else if (!isOff
                && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_OFF) {

            // We told policy already that screen was turning off, but now we changed our minds.
            // Complete the full state transition on -> turningOff -> off.
            unblockScreenOff();
            mWindowManagerPolicy.screenTurnedOff(mDisplayId);
            mWindowManagerPolicy.screenTurnedOff(mDisplayId, mIsInTransition);
            setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF);
        }
        if (!isOff
+5 −5
Original line number Diff line number Diff line
@@ -4803,11 +4803,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {

    // Called on the DisplayManager's DisplayPowerController thread.
    @Override
    public void screenTurnedOff(int displayId) {
    public void screenTurnedOff(int displayId, boolean isSwappingDisplay) {
        if (DEBUG_WAKEUP) Slog.i(TAG, "Display" + displayId + " turned off...");

        if (displayId == DEFAULT_DISPLAY) {
            updateScreenOffSleepToken(true);
            updateScreenOffSleepToken(true, isSwappingDisplay);
            mRequestedOrSleepingDefaultDisplay = false;
            mDefaultDisplayPolicy.screenTurnedOff();
            synchronized (mLock) {
@@ -4858,7 +4858,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        if (displayId == DEFAULT_DISPLAY) {
            Trace.asyncTraceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "screenTurningOn",
                    0 /* cookie */);
            updateScreenOffSleepToken(false);
            updateScreenOffSleepToken(false /* acquire */, false /* isSwappingDisplay */);
            mDefaultDisplayPolicy.screenTurnedOn(screenOnListener);
            mBootAnimationDismissable = false;

@@ -5377,9 +5377,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    }

    // TODO (multidisplay): Support multiple displays in WindowManagerPolicy.
    private void updateScreenOffSleepToken(boolean acquire) {
    private void updateScreenOffSleepToken(boolean acquire, boolean isSwappingDisplay) {
        if (acquire) {
            mScreenOffSleepTokenAcquirer.acquire(DEFAULT_DISPLAY);
            mScreenOffSleepTokenAcquirer.acquire(DEFAULT_DISPLAY, isSwappingDisplay);
        } else {
            mScreenOffSleepTokenAcquirer.release(DEFAULT_DISPLAY);
        }
+3 −1
Original line number Diff line number Diff line
@@ -829,8 +829,10 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants {

    /**
     * Called when the display has turned off.
     * @param displayId The display to apply to.
     * @param isSwappingDisplay Whether the display is swapping to another physical display.
     */
    public void screenTurnedOff(int displayId);
    void screenTurnedOff(int displayId, boolean isSwappingDisplay);

    public interface ScreenOnListener {
        void onScreenOn();
+10 −0
Original line number Diff line number Diff line
@@ -8419,6 +8419,16 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        return inTransitionSelfOrParent();
    }

    boolean isDisplaySleepingAndSwapping() {
        for (int i = mDisplayContent.mAllSleepTokens.size() - 1; i >= 0; i--) {
            RootWindowContainer.SleepToken sleepToken = mDisplayContent.mAllSleepTokens.get(i);
            if (sleepToken.isDisplaySwapping()) {
                return true;
            }
        }
        return false;
    }

    /**
     * Whether this activity is letterboxed for fixed orientation. If letterboxed due to fixed
     * orientation then aspect ratio restrictions are also already respected.
+7 −0
Original line number Diff line number Diff line
@@ -140,6 +140,13 @@ public abstract class ActivityTaskManagerInternal {
         */
        void acquire(int displayId);

        /**
         * Acquires a sleep token.
         * @param displayId The display to apply to.
         * @param isSwappingDisplay Whether the display is swapping to another physical display.
         */
        void acquire(int displayId, boolean isSwappingDisplay);

        /**
         * Releases the sleep token.
         * @param displayId The display to apply to.
Loading