From 268e1abce00e3e9b3f9c88f83424900074bf5a51 Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Thu, 16 Jun 2022 09:40:14 +0000 Subject: [PATCH] Use the TaskFragment override screenLayout for fix rotation Or the screenLayout that caulated from DisplayContent could be different from the actual screenLayout of the Activity after display rotated. Bug: 235917242 Test: atest AppConfigurationTests#testAppOrientationRequestConfigChanges Change-Id: I62c6c6b1ce5df69d2a26984f97330f60a35d87d7 --- services/core/java/com/android/server/wm/WindowToken.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java index ab72e49f1e4f3..437c9344d7934 100644 --- a/services/core/java/com/android/server/wm/WindowToken.java +++ b/services/core/java/com/android/server/wm/WindowToken.java @@ -448,8 +448,14 @@ class WindowToken extends WindowContainer { if (mFixedRotationTransformState != null) { mFixedRotationTransformState.disassociate(this); } + // TODO(b/233855302): Remove TaskFragment override if the DisplayContent uses the same + // bounds for screenLayout calculation. + final Configuration overrideConfig = new Configuration(config); + overrideConfig.screenLayout = TaskFragment.computeScreenLayoutOverride( + overrideConfig.screenLayout, overrideConfig.screenWidthDp, + overrideConfig.screenHeightDp); mFixedRotationTransformState = new FixedRotationTransformState(info, displayFrames, - new Configuration(config), mDisplayContent.getRotation()); + overrideConfig, mDisplayContent.getRotation()); mFixedRotationTransformState.mAssociatedTokens.add(this); mDisplayContent.getDisplayPolicy().simulateLayoutDisplay(displayFrames); onFixedRotationStatePrepared();