diff options
author | Craig Mautner <cmautner@google.com> | 2014-09-03 05:48:43 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-09-03 05:48:43 +0000 |
commit | 55ec668ec302f6f909650c249e7fbe70cb849897 (patch) | |
tree | b07ae5fd70fcd16fc5df8db6db1f995d69884a4f /services | |
parent | 2f405f1f4e85c4b02f271a922b7c3384a2e87564 (diff) | |
parent | cb31188b0a5471340935f994292628380ef7b16c (diff) | |
download | frameworks_base-55ec668ec302f6f909650c249e7fbe70cb849897.zip frameworks_base-55ec668ec302f6f909650c249e7fbe70cb849897.tar.gz frameworks_base-55ec668ec302f6f909650c249e7fbe70cb849897.tar.bz2 |
am 183de81a: am 2d94c706: Merge "Account for scaling effects when cropping" into lmp-dev
* commit '183de81a6cf0c4e45f1fb576cd0da06636ea8336':
Account for scaling effects when cropping
Diffstat (limited to 'services')
-rw-r--r-- | services/core/java/com/android/server/wm/WindowStateAnimator.java | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 4b7dd08..3d4be12 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -524,6 +524,7 @@ class WindowStateAnimator { private boolean mShown = false; private int mLayerStack; private boolean mIsOpaque; + private float mDsdx, mDtdx, mDsdy, mDtdy; private final String mName; public SurfaceTrace(SurfaceSession s, @@ -619,6 +620,19 @@ class WindowStateAnimator { } @Override + public void setMatrix(float dsdx, float dtdx, float dsdy, float dtdy) { + if (dsdx != mDsdx || dtdx != mDtdx || dsdy != mDsdy || dtdy != mDtdy) { + Slog.v(SURFACE_TAG, "setMatrix(" + dsdx + "," + dtdx + "," + dsdy + "," + dtdy + + "): OLD:" + this + ". Called by " + Debug.getCallers(3)); + mDsdx = dsdx; + mDtdx = dtdx; + mDsdy = dsdy; + mDtdy = dtdy; + } + super.setMatrix(dsdx, dtdx, dsdy, dtdy); + } + + @Override public void hide() { if (mShown) { Slog.v(SURFACE_TAG, "hide: OLD:" + this + ". Called by " + Debug.getCallers(3)); @@ -665,7 +679,8 @@ class WindowStateAnimator { + " alpha=" + mSurfaceTraceAlpha + " " + mPosition.x + "," + mPosition.y + " " + mSize.x + "x" + mSize.y + " crop=" + mWindowCrop.toShortString() - + " opaque=" + mIsOpaque; + + " opaque=" + mIsOpaque + + " (" + mDsdx + "," + mDtdx + "," + mDsdy + "," + mDtdy + ")"; } } @@ -1068,6 +1083,14 @@ class WindowStateAnimator { mShownAlpha *= appTransformation.getAlpha(); if (appTransformation.hasClipRect()) { mClipRect.set(appTransformation.getClipRect()); + if (mWin.mHScale > 0) { + mClipRect.left /= mWin.mHScale; + mClipRect.right /= mWin.mHScale; + } + if (mWin.mVScale > 0) { + mClipRect.top /= mWin.mVScale; + mClipRect.bottom /= mWin.mVScale; + } mHasClipRect = true; } } @@ -1418,10 +1441,10 @@ class WindowStateAnimator { w.mLastVScale = w.mVScale; if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(w, "alpha=" + mShownAlpha + " layer=" + mAnimLayer - + " matrix=[" + (mDsDx*w.mHScale) - + "," + (mDtDx*w.mVScale) - + "][" + (mDsDy*w.mHScale) - + "," + (mDtDy*w.mVScale) + "]", null); + + " matrix=[" + mDsDx + "*" + w.mHScale + + "," + mDtDx + "*" + w.mVScale + + "][" + mDsDy + "*" + w.mHScale + + "," + mDtDy + "*" + w.mVScale + "]", null); if (mSurfaceControl != null) { try { mSurfaceAlpha = mShownAlpha; |