From 76be3d052c9ea3993674c3cd03d279486b3684e6 Mon Sep 17 00:00:00 2001 From: Tommy Nordgren Date: Tue, 12 Sep 2023 13:37:36 +0200 Subject: Global scale must always be updated when size compat scale is changed When an orientation change request that comes from the app differs from the orientation for the current activity the UI layout is not updated. This may lead to an un-intended layout size. Solve this by updating Global scale when size compat scale is changed. Test: run test apk Bug: 286384732 Change-Id: I1b3d93337c7700d58be94f5731abff932ea1895b --- services/core/java/com/android/server/wm/ActivityRecord.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index f6fa51e3018a..18a6254ca115 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -8225,7 +8225,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A private void clearSizeCompatModeAttributes() { mInSizeCompatModeForBounds = false; + final float lastSizeCompatScale = mSizeCompatScale; mSizeCompatScale = 1f; + if (mSizeCompatScale != lastSizeCompatScale) { + forAllWindows(WindowState::updateGlobalScale, false /* traverseTopToBottom */); + } mSizeCompatBounds = null; mCompatDisplayInsets = null; mLetterboxUiController.clearInheritedCompatDisplayInsets(); @@ -8233,11 +8237,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A @VisibleForTesting void clearSizeCompatMode() { - final float lastSizeCompatScale = mSizeCompatScale; clearSizeCompatModeAttributes(); - if (mSizeCompatScale != lastSizeCompatScale) { - forAllWindows(WindowState::updateGlobalScale, false /* traverseTopToBottom */); - } // Clear config override in #updateCompatDisplayInsets(). final int activityType = getActivityType(); final Configuration overrideConfig = getRequestedOverrideConfiguration(); -- cgit v1.2.3-59-g8ed1b