diff --git a/services/core/java/com/android/server/input/InputWindowHandle.java b/services/core/java/com/android/server/input/InputWindowHandle.java index 207c05d72bd19..eb3581ad6dad6 100644 --- a/services/core/java/com/android/server/input/InputWindowHandle.java +++ b/services/core/java/com/android/server/input/InputWindowHandle.java @@ -106,6 +106,7 @@ public final class InputWindowHandle { .append(", frame=[").append(frameLeft).append(",").append(frameTop).append(",") .append(frameRight).append(",").append(frameBottom).append("]") .append(", touchableRegion=").append(touchableRegion) + .append(", visible=").append(visible) .toString(); } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index a2ca170d23e0e..a0a2162b0f90e 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -1605,8 +1605,9 @@ final class WindowState implements WindowManagerPolicy.WindowState { // Already showing. return false; } - if (!mHasSurface) { - mDestroying = false; + if (!mHasSurface && mDestroySurfaceWhenHidden) { + // This is a window that doesn't retain the surface when it's hidden, so immediately + // when we want to show it again, we need to create the surface for it. mWinAnimator.createSurfaceLocked(); } if (DEBUG_VISIBILITY) Slog.v(TAG, "Policy visibility true: " + this);