summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pablo Gamito <pablogamito@google.com> 2022-03-18 13:56:38 +0000
committer Pablo Gamito <pablogamito@google.com> 2022-03-18 14:47:48 +0000
commit6a1d698ace1a10f97242ce4478a32dbd24e2b1b2 (patch)
treea4d6fa56fd13025e1ede9238523db21dff8131eb
parent0f608efde92f423c080272384c80f94d681e6018 (diff)
Don't increment colorLayerCounter on surface migration
If the TDA's surface is migrated mid transition then the colorLayerCounter is increment an additional time leading to a colorLayerCounter that is out of sync by +1 which means the color is never cleared. Test: Run repo steps from b/221775939 and make sure the background color doesn't presist Bug: 221775939 Merged-In: Ifc93d5482bad9591e942e4be91e0039daae743b1 Change-Id: Ifc93d5482bad9591e942e4be91e0039daae743b1
-rw-r--r--services/core/java/com/android/server/wm/TaskDisplayArea.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java
index db6d3ce69cc8..15a294ee7484 100644
--- a/services/core/java/com/android/server/wm/TaskDisplayArea.java
+++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java
@@ -971,9 +971,19 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
}
void setBackgroundColor(@ColorInt int colorInt) {
+ setBackgroundColor(colorInt, false /* restore */);
+ }
+
+ void setBackgroundColor(@ColorInt int colorInt, boolean restore) {
mBackgroundColor = colorInt;
Color color = Color.valueOf(colorInt);
- mColorLayerCounter++;
+
+ // We don't want to increment the mColorLayerCounter if we are restoring the background
+ // color after a surface migration because in that case the mColorLayerCounter already
+ // accounts for setting that background color.
+ if (!restore) {
+ mColorLayerCounter++;
+ }
// Only apply the background color if the TDA is actually attached and has a valid surface
// to set the background color on. We still want to keep track of the background color state
@@ -1002,7 +1012,7 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
super.migrateToNewSurfaceControl(t);
if (mColorLayerCounter > 0) {
- setBackgroundColor(mBackgroundColor);
+ setBackgroundColor(mBackgroundColor, true /* restore */);
}
// As TaskDisplayArea is getting a new surface, reparent and reorder the child surfaces.