OSDN Git Service

Revert "DO NOT MERGE Fix race condition between binder deaths"
authorJustin Koh <justinkoh@google.com>
Fri, 26 Sep 2014 01:29:17 +0000 (01:29 +0000)
committerJustin Koh <justinkoh@google.com>
Fri, 26 Sep 2014 01:29:17 +0000 (01:29 +0000)
This reverts commit 8828d86e79424fc1c7b7d1f908e3450879d5cea0.

Change-Id: I211f7b78a286868d8441323ff3c9cf4d7482fb61

services/core/java/com/android/server/wm/AppWindowToken.java
services/core/java/com/android/server/wm/TaskStack.java
services/core/java/com/android/server/wm/WindowManagerService.java

index 4fe37e8..ca4ad8a 100644 (file)
@@ -245,15 +245,6 @@ class AppWindowToken extends WindowToken {
         return false;
     }
 
-    void removeAllWindows() {
-        for (int winNdx = allAppWindows.size() - 1; winNdx >= 0; --winNdx) {
-            WindowState win = allAppWindows.get(winNdx);
-            if (WindowManagerService.DEBUG_WINDOW_MOVEMENT) Slog.w(WindowManagerService.TAG,
-                    "removeAllWindows: removing win=" + win);
-            win.mService.removeWindowLocked(win.mSession, win);
-        }
-    }
-
     @Override
     void dump(PrintWriter pw, String prefix) {
         super.dump(pw, prefix);
index 6823577..72b4034 100644 (file)
@@ -155,7 +155,7 @@ public class TaskStack {
                 final ArrayList<WindowState> windows = activities.get(activityNdx).allAppWindows;
                 for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
                     final WindowStateAnimator winAnimator = windows.get(winNdx).mWinAnimator;
-                    if (winAnimator.isAnimating() || winAnimator.mWin.mExiting) {
+                    if (winAnimator.isAnimating() && !winAnimator.isDummyAnimation()) {
                         return true;
                     }
                 }
index 2b57f50..751919b 100644 (file)
@@ -3540,7 +3540,7 @@ public class WindowManagerService extends IWindowManager.Stub
                 return;
             }
             final Task oldTask = mTaskIdToTask.get(atoken.groupId);
-            oldTask.removeAppToken(atoken);
+            removeAppFromTaskLocked(atoken);
 
             atoken.groupId = groupId;
             Task newTask = mTaskIdToTask.get(groupId);
@@ -4562,8 +4562,6 @@ public class WindowManagerService extends IWindowManager.Stub
     }
 
     void removeAppFromTaskLocked(AppWindowToken wtoken) {
-        wtoken.removeAllWindows();
-
         final Task task = mTaskIdToTask.get(wtoken.groupId);
         if (task != null) {
             if (!task.removeAppToken(wtoken)) {