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

Commit 764aa08d 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:...

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

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

Bug: 271098735
Change-Id: I85c3180ce938146a486280db348c2f3894bc22ca
Merged-In: I687f35f4989f9e23276451c9b3a3ce8578e64280
parents 3bd2898e d6c699ae
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2228,14 +2228,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
@@ -4987,11 +4987,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) {
@@ -5042,7 +5042,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;

@@ -5561,9 +5561,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
@@ -835,8 +835,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
@@ -8525,6 +8525,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
@@ -143,6 +143,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