From 38451b824723095967d36445e9be029bf73d4226 Mon Sep 17 00:00:00 2001 From: Robert Carr Date: Fri, 25 Sep 2015 14:56:38 -0700 Subject: [PATCH] WindowStateAnimation: Clear transformation clip rect. Ensure the clip rect taken from transformations is cleared when there is no transformation. Normally the failure to clear the clip would not cause a problem, as the final clip would be equal to the window size. However, in the event that the window scale goes on to change (WindowState::m(H/V)Scale that is) the clip will now be specified at the inappropriate scale (notice the way the clip must be divided by H/VScale as SurfaceFlinger will apply the surface transform to the clip). Bug:24298694 Change-Id: I4548e8ecea8d66d4942e99823653a7b05f87cea0 (cherry picked from commit 2f0fe62c5426533ccdf9ec7ef28027c367286979) --- .../core/java/com/android/server/wm/WindowStateAnimator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 726d29da533a2..42042b94bc9f5 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -1064,6 +1064,8 @@ class WindowStateAnimator { mAnimator.getScreenRotationAnimationLocked(displayId); final boolean screenAnimation = screenRotationAnimation != null && screenRotationAnimation.isAnimating(); + + mHasClipRect = false; if (selfTransformation || attachedTransformation != null || appTransformation != null || screenAnimation) { // cache often used attributes locally @@ -1139,7 +1141,6 @@ class WindowStateAnimator { // transforming since it is more important to have that // animation be smooth. mShownAlpha = mAlpha; - mHasClipRect = false; if (!mService.mLimitedAlphaCompositing || (!PixelFormat.formatHasAlpha(mWin.mAttrs.format) || (mWin.isIdentityMatrix(mDsDx, mDtDx, mDsDy, mDtDy)