summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2021-09-07 23:36:37 +0800
committer Riddle Hsu <riddlehsu@google.com> 2021-09-07 23:36:37 +0800
commitb4fdc0e4ba0796eebb215be06782252d4110cce7 (patch)
tree0f970cef8580310abae778711d188ebad7d831cf
parent08774f2ffc033d4e8186b5a7914b7e08a1fed84c (diff)
Avoid applying window config from updating persistent config
The changed global configuration will also apply to default display. When the display is rotating, the transition will be disturbed if the given configuration contains stale window configuration (e.g. bounds and rotation). Because persistent configuration only includes locale and font scale, clear the window configuration to avoid the noise. Bug: 196313047 Test: Back from a landscape activity to a portrait activity. The portrait app activity calls LocalePicker#updateLocale in onResume. The transition should not be flickering. Change-Id: Ib1bea1b752eb695e26b8b0622bcf06ec01cce3e6
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java3
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java3
2 files changed, 5 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 081c618b62aa..1652c3b2a9a7 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -4066,6 +4066,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
final long origId = Binder.clearCallingIdentity();
try {
synchronized (mGlobalLock) {
+ // Window configuration is unrelated to persistent configuration (e.g. font scale,
+ // locale). Unset it to avoid affecting the current display configuration.
+ values.windowConfiguration.setToDefaults();
updateConfigurationLocked(values, null, false, true, userId,
false /* deferResume */);
}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index b110d8d44fc5..7438fa3456e3 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -5693,7 +5693,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
final Configuration currOverrideConfig = getRequestedOverrideConfiguration();
final int currRotation = currOverrideConfig.windowConfiguration.getRotation();
final int overrideRotation = overrideConfiguration.windowConfiguration.getRotation();
- if (currRotation != ROTATION_UNDEFINED && currRotation != overrideRotation) {
+ if (currRotation != ROTATION_UNDEFINED && overrideRotation != ROTATION_UNDEFINED
+ && currRotation != overrideRotation) {
applyRotationAndFinishFixedRotation(currRotation, overrideRotation);
}
mCurrentOverrideConfigurationChanges = currOverrideConfig.diff(overrideConfiguration);