Fix letterbox insets when starting app
Showing the letterbox with checking on HAS_DRAWN is too late. We
also need to show it in READY_TO_SHOW such that we have it
available when starting the transition.
Test: Open letterboxed app. Observe no flicker
Test: Capture winscope trace and make sure content insets when
reopening app are correct.
Bug: 76220728
Change-Id: I20ed8b1b5a90cc0a878d3eb1512e1aa1e4cd37f3
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index 56c9e51..f19c554 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -1485,7 +1485,7 @@
if (w == null || winHint != null && w != winHint) {
return;
}
- final boolean surfaceReady = w.hasDrawnLw() // Regular case
+ final boolean surfaceReady = w.isDrawnLw() // Regular case
|| w.mWinAnimator.mSurfaceDestroyDeferred // The preserved surface is still ready.
|| w.isDragResizeChanged(); // Waiting for relayoutWindow to call preserveSurface.
final boolean needsLetterbox = w.isLetterboxedAppWindow() && fillsParent() && surfaceReady;