Merge "Do not set orientation changing to invisible window" into tm-qpr-dev

This commit is contained in:
Riddle Hsu
2022-10-05 08:39:48 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 1 deletions

View File

@@ -6007,7 +6007,11 @@ public class WindowManagerService extends IWindowManager.Stub
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);
// WindowsState#reportResized won't tell invisible requested window to redraw,
// so do not set it as changing orientation to avoid affecting draw state.
if (w.isVisibleRequested()) {
w.setOrientationChanging(true);
}
if (mWindowsFreezingScreen == WINDOWS_FREEZING_SCREENS_NONE) {
mWindowsFreezingScreen = WINDOWS_FREEZING_SCREENS_ACTIVE;
// XXX should probably keep timeout from

View File

@@ -731,6 +731,15 @@ public class WindowStateTests extends WindowTestsBase {
assertTrue(mWm.mResizingWindows.contains(startingApp));
assertTrue(startingApp.isDrawn());
assertFalse(startingApp.getOrientationChanging());
// Even if the display is frozen, invisible requested window should not be affected.
startingApp.mActivityRecord.mVisibleRequested = false;
mWm.startFreezingDisplay(0, 0, mDisplayContent);
doReturn(true).when(mWm.mPolicy).isScreenOn();
startingApp.getWindowFrames().setInsetsChanged(true);
startingApp.updateResizingWindowIfNeeded();
assertTrue(startingApp.isDrawn());
assertFalse(startingApp.getOrientationChanging());
}
@UseTestDisplay(addWindows = W_ABOVE_ACTIVITY)