summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/Task.java11
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java9
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);
}
}