summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/AppWindowToken.java5
-rw-r--r--services/core/java/com/android/server/wm/Task.java2
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java11
3 files changed, 14 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index f859fd2e44bb..da25c53323be 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -304,10 +304,11 @@ class AppWindowToken extends WindowToken {
pw.print(prefix); pw.print("inPendingTransaction=");
pw.println(inPendingTransaction);
}
- if (startingData != null || removed || firstWindowDrawn) {
+ if (startingData != null || removed || firstWindowDrawn || mDeferRemoval) {
pw.print(prefix); pw.print("startingData="); pw.print(startingData);
pw.print(" removed="); pw.print(removed);
- pw.print(" firstWindowDrawn="); pw.println(firstWindowDrawn);
+ pw.print(" firstWindowDrawn="); pw.print(firstWindowDrawn);
+ pw.print(" mDeferRemoval="); pw.println(mDeferRemoval);
}
if (startingWindow != null || startingView != null
|| startingDisplayed || startingMoved) {
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index a60be3b95d6a..b49b87c0d5b1 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -68,6 +68,6 @@ class Task {
@Override
public String toString() {
- return "{taskId=" + taskId + " appTokens=" + mAppTokens + "}";
+ return "{taskId=" + taskId + " appTokens=" + mAppTokens + " mdr=" + mDeferRemoval + "}";
}
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 27509411d93d..4d0169d55916 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -5200,8 +5200,17 @@ public class WindowManagerService extends IWindowManager.Stub
if (DEBUG_STACK) Slog.i(TAG, "removeTask: removing taskId=" + taskId);
EventLog.writeEvent(EventLogTags.WM_TASK_REMOVED, taskId, "removeTask");
task.mDeferRemoval = false;
- task.mStack.removeTask(task);
+ stack.removeTask(task);
mTaskIdToTask.delete(task.taskId);
+
+ final ArrayList<AppWindowToken> exitingApps = stack.mExitingAppTokens;
+ for (int appNdx = exitingApps.size() - 1; appNdx >= 0; --appNdx) {
+ final AppWindowToken wtoken = exitingApps.get(appNdx);
+ if (wtoken.groupId == taskId) {
+ wtoken.mDeferRemoval = false;
+ exitingApps.remove(appNdx);
+ }
+ }
}
public void removeTask(int taskId) {