When closing task stack remove reference to display content.
This tightens the guarantee that detached stack won't be used. We also
add logging to detecting a situation where a stack not belonging to a
display is being moved on that display.
Bug: 22191609
Change-Id: Ia674bb5960018104a56c5138775ab5216906675b
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 5d6df26..4db0b1e 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -203,7 +203,9 @@
}
void moveStack(TaskStack stack, boolean toTop) {
- mStacks.remove(stack);
+ if (!mStacks.remove(stack)) {
+ Slog.wtf(TAG, "moving stack that was not added: " + stack, new Throwable());
+ }
mStacks.add(toTop ? mStacks.size() : 0, stack);
}
diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java
index 4545032..794b49c 100644
--- a/services/core/java/com/android/server/wm/TaskStack.java
+++ b/services/core/java/com/android/server/wm/TaskStack.java
@@ -385,8 +385,6 @@
}
close();
-
- mDisplayContent = null;
}
void resetAnimationBackgroundAnimator() {
@@ -518,6 +516,7 @@
mDimLayer.destroySurface();
mDimLayer = null;
}
+ mDisplayContent = null;
}
public void dump(String prefix, PrintWriter pw) {