diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 5077f32938081..76fdda0175f0f 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2382,6 +2382,9 @@ final class WindowState implements WindowManagerPolicy.WindowState { if (stack != null) { pw.print(" stackId="); pw.print(stack.mStackId); } + if (mNotOnAppsDisplay) { + pw.print(" mNotOnAppsDisplay="); pw.print(mNotOnAppsDisplay); + } pw.print(" mSession="); pw.print(mSession); pw.print(" mClient="); pw.println(mClient.asBinder()); pw.print(prefix); pw.print("mOwnerUid="); pw.print(mOwnerUid); diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 1f76f318b251a..08982f4466bca 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1290,6 +1290,17 @@ class WindowStateAnimator { } private void adjustCropToStackBounds(WindowState w, Rect clipRect, Rect finalClipRect, boolean isFreeformResizing) { + + final DisplayContent displayContent = w.getDisplayContent(); + if (displayContent != null && !displayContent.isDefaultDisplay) { + // There are some windows that live on other displays while their app and main window + // live on the default display (e.g. casting...). We don't want to crop this windows + // to the stack bounds which is only currently supported on the default display. + // TODO(multi-display): Need to support cropping to stack bounds on other displays + // when we have stacks on other displays. + return; + } + final Task task = w.getTask(); if (task == null || !task.cropWindowsToStackBounds()) { return;