diff options
| author | 2019-04-08 15:49:18 +0800 | |
|---|---|---|
| committer | 2019-04-08 15:49:18 +0800 | |
| commit | 1ffefc21a2f59d3805f3242f87a86f3dccfd8978 (patch) | |
| tree | 4d3ca092df8cc4c44e4215ac7256e10120e10c43 | |
| parent | 835f260d602a319e6670911ff3887f5c6247b33d (diff) | |
Set mEnterAnimationPending to true if a window was not visible
mEnterAnimationPending will be cleared when enter-animation is applied.
However, if a window was already visible, the enter-animation won't be
applied. This CL ensures mEnterAnimationPending is set to true only if a
window was not visible to prevent the state of mEnterAnimationPending
from being leaked.
Bug: 128510422
Test: Manual:
1. Go to Settings > Accessibility > Magnification
> Magnify with triple-tap.
2. Turn on "Use service".
3. Triple-tap.
4. Press [back] button.
5. See if the orange border is around the entire screen except the
navigation bar.
Note: 1. ~ 4. should be done within 10 seconds.
Change-Id: Id1a811175214af25ec8014b3f5814cff16d70331
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowState.java | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index ce496f47be54..8ed2a15b2b98 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2107,7 +2107,7 @@ public class WindowManagerService extends IWindowManager.Stub if (shouldRelayout) { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "relayoutWindow: viewVisibility_1"); - result = win.relayoutVisibleWindow(result, attrChanges, oldVisibility); + result = win.relayoutVisibleWindow(result, attrChanges); try { result = createSurfaceControl(outSurfaceControl, result, win, winAnimator); diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 08ade37c995c..d990e6c6c24b 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -4446,7 +4446,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return !mLastSurfaceInsets.equals(mAttrs.surfaceInsets); } - int relayoutVisibleWindow(int result, int attrChanges, int oldVisibility) { + int relayoutVisibleWindow(int result, int attrChanges) { final boolean wasVisible = isVisibleLw(); result |= (!wasVisible || !isDrawnLw()) ? RELAYOUT_RES_FIRST_TIME : 0; @@ -4466,7 +4466,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP mDestroying = false; mWmService.mDestroySurface.remove(this); } - if (oldVisibility == View.GONE) { + if (!wasVisible) { mWinAnimator.mEnterAnimationPending = true; } |