diff options
| author | Craig Mautner <cmautner@google.com> | 2014-06-14 00:22:36 +0000 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2014-06-14 00:22:36 +0000 |
| commit | 40190375408034b2b7dd1aef358086da2914051b (patch) | |
| tree | 989e51f2c44ed6c8728780085b50964cc7551a99 | |
| parent | 122ee7e861cf8002e8c70eb151d1b1dfba27248d (diff) | |
| parent | 6fe2184bf10362ac53db7e8f6a0be521ea59b054 (diff) | |
| download | frameworks_base-40190375408034b2b7dd1aef358086da2914051b.zip frameworks_base-40190375408034b2b7dd1aef358086da2914051b.tar.gz frameworks_base-40190375408034b2b7dd1aef358086da2914051b.tar.bz2 | |
am 6fe2184b: Do not treat the dummy animation as an animation
* commit '6fe2184bf10362ac53db7e8f6a0be521ea59b054':
Do not treat the dummy animation as an animation
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskStack.java | 18 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 2 |
2 files changed, 17 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index 81db8b3..72b4034 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -154,7 +154,8 @@ public class TaskStack { for (int activityNdx = activities.size() - 1; activityNdx >= 0; --activityNdx) { final ArrayList<WindowState> windows = activities.get(activityNdx).allAppWindows; for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) { - if (windows.get(winNdx).mWinAnimator.isAnimating()) { + final WindowStateAnimator winAnimator = windows.get(winNdx).mWinAnimator; + if (winAnimator.isAnimating() && !winAnimator.isDummyAnimation()) { return true; } } @@ -236,9 +237,22 @@ public class TaskStack { void detachDisplay() { EventLog.writeEvent(EventLogTags.WM_STACK_REMOVED, mStackId); + + boolean doAnotherLayoutPass = false; for (int taskNdx = mTasks.size() - 1; taskNdx >= 0; --taskNdx) { - mService.tmpRemoveTaskWindowsLocked(mTasks.get(taskNdx)); + final AppTokenList appWindowTokens = mTasks.get(taskNdx).mAppTokens; + for (int appNdx = appWindowTokens.size() - 1; appNdx >= 0; --appNdx) { + final WindowList appWindows = appWindowTokens.get(appNdx).allAppWindows; + for (int winNdx = appWindows.size() - 1; winNdx >= 0; --winNdx) { + mService.removeWindowInnerLocked(null, appWindows.get(winNdx)); + doAnotherLayoutPass = true; + } + } } + if (doAnotherLayoutPass) { + mService.requestTraversalLocked(); + } + mAnimationBackgroundSurface.destroySurface(); mAnimationBackgroundSurface = null; mDimLayer.destroySurface(); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 308f4de..33887b6 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2488,7 +2488,7 @@ public class WindowManagerService extends IWindowManager.Stub Binder.restoreCallingIdentity(origId); } - private void removeWindowInnerLocked(Session session, WindowState win) { + void removeWindowInnerLocked(Session session, WindowState win) { if (win.mRemoved) { // Nothing to do. return; |
