diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/AppWindowToken.java | 8 |
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)); |