diff options
| author | 2021-09-07 23:36:37 +0800 | |
|---|---|---|
| committer | 2021-09-07 23:36:37 +0800 | |
| commit | b4fdc0e4ba0796eebb215be06782252d4110cce7 (patch) | |
| tree | 0f970cef8580310abae778711d188ebad7d831cf | |
| parent | 08774f2ffc033d4e8186b5a7914b7e08a1fed84c (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.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 3 |
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); |