summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2014-06-14 00:22:36 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-06-14 00:22:36 +0000
commit40190375408034b2b7dd1aef358086da2914051b (patch)
tree989e51f2c44ed6c8728780085b50964cc7551a99
parent122ee7e861cf8002e8c70eb151d1b1dfba27248d (diff)
parent6fe2184bf10362ac53db7e8f6a0be521ea59b054 (diff)
downloadframeworks_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.java18
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java2
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;