diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 11 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 9 |
2 files changed, 15 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 72970f6c7545..b4ddebc7c346 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -157,8 +157,17 @@ class Task implements DimLayer.DimLayerUser { mDeferRemoval = false; } + private boolean hasAppTokensAlive() { + for (int i = mAppTokens.size() - 1; i >= 0; i--) { + if (!mAppTokens.get(i).appDied) { + return true; + } + } + return false; + } + void removeLocked() { - if (!mAppTokens.isEmpty() && mStack.isAnimating()) { + if (hasAppTokensAlive() && mStack.isAnimating()) { if (DEBUG_STACK) Slog.i(TAG_WM, "removeTask: deferring removing taskId=" + mTaskId); mDeferRemoval = true; return; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 45e28e1a25eb..2477acd15cd9 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -9769,8 +9769,9 @@ public class WindowManagerService extends IWindowManager.Stub boolean dumpWindows(PrintWriter pw, String name, String[] args, int opti, boolean dumpAll) { WindowList windows = new WindowList(); - if ("visible".equals(name) || "visible-apps".equals(name)) { - final boolean appsOnly = "visible-apps".equals(name); + if ("apps".equals(name) || "visible".equals(name) || "visible-apps".equals(name)) { + final boolean appsOnly = name.contains("apps"); + final boolean visibleOnly = name.contains("visible"); synchronized(mWindowMap) { if (appsOnly) { dumpDisplayContentsLocked(pw, true); @@ -9782,8 +9783,8 @@ public class WindowManagerService extends IWindowManager.Stub mDisplayContents.valueAt(displayNdx).getWindowList(); for (int winNdx = windowList.size() - 1; winNdx >= 0; --winNdx) { final WindowState w = windowList.get(winNdx); - if (w.mWinAnimator.getShown() - && (!appsOnly || (appsOnly && w.mAppToken != null))) { + if ((!visibleOnly || w.mWinAnimator.getShown()) + && (!appsOnly || w.mAppToken != null)) { windows.add(w); } } |