diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index ff95afc995b48..08bfa2de0b83a 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2732,14 +2732,14 @@ final class WindowState implements WindowManagerPolicy.WindowState { return mStringNameCache; } - void transformFromScreenToSurfaceSpace(Rect rect) { + void transformClipRectFromScreenToSurfaceSpace(Rect clipRect) { if (mHScale >= 0) { - rect.left = (int) (rect.left / mHScale); - rect.right = (int) (rect.right / mHScale); + clipRect.left = (int) (clipRect.left / mHScale); + clipRect.right = (int) Math.ceil(clipRect.right / mHScale); } if (mVScale >= 0) { - rect.top = (int) (rect.top / mVScale); - rect.bottom = (int) (rect.bottom / mVScale); + clipRect.top = (int) (clipRect.top / mVScale); + clipRect.bottom = (int) Math.ceil(clipRect.bottom / mVScale); } } diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 37d6faf5a8464..3b4c3cf6863c6 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1281,7 +1281,7 @@ class WindowStateAnimator { if (DEBUG_WINDOW_CROP) Slog.d(TAG, "win=" + w + " Clip rect after stack adjustment=" + clipRect); - w.transformFromScreenToSurfaceSpace(clipRect); + w.transformClipRectFromScreenToSurfaceSpace(clipRect); // See {@link WindowState#notifyMovedInStack} for why this is necessary. if (w.hasJustMovedInStack() && mLastClipRect.isEmpty() && !clipRect.isEmpty()) {