diff options
| -rw-r--r-- | services/java/com/android/server/wm/WindowManagerService.java | 6 | ||||
| -rw-r--r-- | services/java/com/android/server/wm/WindowState.java | 14 |
2 files changed, 14 insertions, 6 deletions
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 3af3e06d3b36..f52a58035464 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -2578,11 +2578,7 @@ public class WindowManagerService extends IWindowManager.Stub (win.mAppToken == null || !win.mAppToken.clientHidden)) { displayed = !win.isVisibleLw(); if (win.mExiting) { - win.mExiting = false; - if (win.mAnimation != null) { - win.mAnimation.cancel(); - win.mAnimation = null; - } + win.cancelExitAnimationForNextAnimationLocked(); } if (win.mDestroying) { win.mDestroying = false; diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index eeffb028c0cd..6988979f8542 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -596,6 +596,18 @@ final class WindowState implements WindowManagerPolicy.WindowState { } } + // TODO: Fix and call finishExit() instead of cancelExitAnimationForNextAnimationLocked() + // for avoiding the code duplication. + void cancelExitAnimationForNextAnimationLocked() { + if (!mExiting) return; + if (mAnimation != null) { + mAnimation.cancel(); + mAnimation = null; + destroySurfaceLocked(); + } + mExiting = false; + } + Surface createSurfaceLocked() { if (mSurface == null) { mReportDestroySurface = false; @@ -1742,4 +1754,4 @@ final class WindowState implements WindowManagerPolicy.WindowState { } return mStringNameCache; } -}
\ No newline at end of file +} |