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

Commit bd20b588 authored by Riddle Hsu's avatar Riddle Hsu Committed by Automerger Merge Worker
Browse files

Merge "Do not set orientation changing just for screen off" into tm-qpr-dev am: 5eacb19b

parents 3948ad07 5eacb19b
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1020,7 +1020,7 @@ public class WindowManagerService extends IWindowManager.Stub
    private int mExitAnimId, mEnterAnimId;

    /** The display that the rotation animation is applying to. */
    private int mFrozenDisplayId;
    private int mFrozenDisplayId = INVALID_DISPLAY;

    /** Skip repeated ActivityRecords initialization. Note that AppWindowsToken's version of this
     * is a long initialized to Long.MIN_VALUE so that it doesn't match this value on startup. */
@@ -5968,10 +5968,10 @@ public class WindowManagerService extends IWindowManager.Stub
    }

    void makeWindowFreezingScreenIfNeededLocked(WindowState w) {
        // If the screen is currently frozen or off, then keep
        // it frozen/off until this window draws at its new
        // orientation.
        if (!w.mToken.okToDisplay() && mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_TIMEOUT) {
        // If the screen is currently frozen, then keep it frozen until this window draws at its
        // new orientation.
        if (mFrozenDisplayId != INVALID_DISPLAY && mFrozenDisplayId == w.getDisplayId()
                && mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_TIMEOUT) {
            ProtoLog.v(WM_DEBUG_ORIENTATION, "Changing surface while display frozen: %s", w);
            w.setOrientationChanging(true);
            if (mWindowsFreezingScreen == WINDOWS_FREEZING_SCREENS_NONE) {
+11 −0
Original line number Diff line number Diff line
@@ -720,6 +720,17 @@ public class WindowStateTests extends WindowTestsBase {
        outWaitingForDrawn.clear();
        invisibleApp.requestDrawIfNeeded(outWaitingForDrawn);
        assertTrue(outWaitingForDrawn.isEmpty());

        // Drawn state should not be changed for insets change when screen is off.
        spyOn(mWm.mPolicy);
        doReturn(false).when(mWm.mPolicy).isScreenOn();
        makeWindowVisibleAndDrawn(startingApp);
        startingApp.getConfiguration().orientation = 0; // Reset to be the same as last reported.
        startingApp.getWindowFrames().setInsetsChanged(true);
        startingApp.updateResizingWindowIfNeeded();
        assertTrue(mWm.mResizingWindows.contains(startingApp));
        assertTrue(startingApp.isDrawn());
        assertFalse(startingApp.getOrientationChanging());
    }

    @UseTestDisplay(addWindows = W_ABOVE_ACTIVITY)