summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/wm/AppWindowToken.java8
1 files changed, 5 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index d2ddf551fc8d..f77439e15caf 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -1471,11 +1471,13 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
void layoutLetterbox(WindowState winHint) {
final WindowState w = findMainWindow();
- if (w != winHint && winHint != null && w != null) {
+ if (w == null || winHint != null && w != winHint) {
return;
}
- final boolean needsLetterbox = w != null && w.isLetterboxedAppWindow()
- && fillsParent() && w.hasDrawnLw();
+ final boolean surfaceReady = w.hasDrawnLw() // 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;
if (needsLetterbox) {
if (mLetterbox == null) {
mLetterbox = new Letterbox(() -> makeChildSurface(null));