diff options
| -rw-r--r-- | services/java/com/android/server/wm/ScreenRotationAnimation.java | 42 | ||||
| -rw-r--r-- | services/java/com/android/server/wm/WindowManagerService.java | 23 |
2 files changed, 54 insertions, 11 deletions
diff --git a/services/java/com/android/server/wm/ScreenRotationAnimation.java b/services/java/com/android/server/wm/ScreenRotationAnimation.java index 55fb03831b6c..04a039fbcd56 100644 --- a/services/java/com/android/server/wm/ScreenRotationAnimation.java +++ b/services/java/com/android/server/wm/ScreenRotationAnimation.java @@ -16,6 +16,8 @@ package com.android.server.wm; +import java.io.PrintWriter; + import android.content.Context; import android.graphics.Matrix; import android.graphics.PixelFormat; @@ -96,6 +98,46 @@ class ScreenRotationAnimation { final Matrix mTmpMatrix = new Matrix(); final float[] mTmpFloats = new float[9]; + public void printTo(String prefix, PrintWriter pw) { + pw.print(prefix); pw.print("mSurface="); pw.print(mSurface); + pw.print(" mWidth="); pw.print(mWidth); + pw.print(" mHeight="); pw.println(mHeight); + pw.print(prefix); pw.print("mBlackFrame="); pw.println(mBlackFrame); + pw.print(prefix); pw.print("mSnapshotRotation="); pw.print(mSnapshotRotation); + pw.print(" mSnapshotDeltaRotation="); pw.print(mSnapshotDeltaRotation); + pw.print(" mCurRotation="); pw.println(mCurRotation); + pw.print(prefix); pw.print("mOriginalRotation="); pw.print(mOriginalRotation); + pw.print(" mOriginalWidth="); pw.print(mOriginalWidth); + pw.print(" mOriginalHeight="); pw.println(mOriginalHeight); + pw.print(prefix); pw.print("mStarted="); pw.print(mStarted); + pw.print(" mAnimRunning="); pw.print(mAnimRunning); + pw.print(" mFinishAnimReady="); pw.print(mFinishAnimReady); + pw.print(" mFinishAnimStartTime="); pw.println(mFinishAnimStartTime); + pw.print(prefix); pw.print("mStartExitAnimation="); pw.print(mStartExitAnimation); + pw.print(" "); mStartExitTransformation.printShortString(pw); pw.println(); + pw.print(prefix); pw.print("mStartEnterAnimation="); pw.print(mStartEnterAnimation); + pw.print(" "); mStartEnterTransformation.printShortString(pw); pw.println(); + pw.print(prefix); pw.print("mFinishExitAnimation="); pw.print(mFinishExitAnimation); + pw.print(" "); mFinishExitTransformation.printShortString(pw); pw.println(); + pw.print(prefix); pw.print("mFinishEnterAnimation="); pw.print(mFinishEnterAnimation); + pw.print(" "); mFinishEnterTransformation.printShortString(pw); pw.println(); + pw.print(prefix); pw.print("mRotateExitAnimation="); pw.print(mRotateExitAnimation); + pw.print(" "); mRotateExitTransformation.printShortString(pw); pw.println(); + pw.print(prefix); pw.print("mRotateEnterAnimation="); pw.print(mRotateEnterAnimation); + pw.print(" "); mRotateEnterTransformation.printShortString(pw); pw.println(); + pw.print(prefix); pw.print("mLastRotateExitAnimation="); + pw.print(mLastRotateExitAnimation); + pw.print(" "); mLastRotateExitTransformation.printShortString(pw); pw.println(); + pw.print(prefix); pw.print("mExitTransformation="); + mExitTransformation.printShortString(pw); pw.println(); + pw.print(prefix); pw.print("mEnterTransformation="); + mEnterTransformation.printShortString(pw); pw.println(); + pw.print(prefix); pw.print("mSnapshotInitialMatrix="); + mSnapshotInitialMatrix.printShortString(pw); + pw.print(" mSnapshotFinalMatrix="); mSnapshotFinalMatrix.printShortString(pw); + pw.println(); + } + public ScreenRotationAnimation(Context context, SurfaceSession session, boolean inTransaction, int originalWidth, int originalHeight, int originalRotation) { mContext = context; diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 3b5ec035ec51..bdbaab498b97 100644 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -7636,6 +7636,8 @@ public class WindowManagerService extends IWindowManager.Stub mInnerFields.mAnimating = true; } else { updateRotation = true; + mScreenRotationAnimation.kill(); + mScreenRotationAnimation = null; } } } @@ -8708,7 +8710,7 @@ public class WindowManagerService extends IWindowManager.Stub mInnerFields.mAnimating = false; // SECOND LOOP: Execute animations and update visibility of windows. - updateRotation = + updateRotation |= updateAppsAndRotationAnimationsLocked(currentTime, innerDw, innerDh); if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "*** ANIM STEP: seq=" @@ -9012,11 +9014,6 @@ public class WindowManagerService extends IWindowManager.Stub mTurnOnScreen = false; } - if (updateRotation && mScreenRotationAnimation != null) { - mScreenRotationAnimation.kill(); - mScreenRotationAnimation = null; - } - if (updateRotation) { if (DEBUG_ORIENTATION) Slog.d(TAG, "Performing post-rotate rotation"); if (updateRotationUncheckedLocked(false)) { @@ -9387,7 +9384,7 @@ public class WindowManagerService extends IWindowManager.Stub } if (CUSTOM_SCREEN_ROTATION) { - if (mScreenRotationAnimation != null && mScreenRotationAnimation.isAnimating()) { + if (mScreenRotationAnimation != null) { mScreenRotationAnimation.kill(); mScreenRotationAnimation = null; } @@ -9918,11 +9915,15 @@ public class WindowManagerService extends IWindowManager.Stub pw.print(" mLastWindowForcedOrientation"); pw.print(mLastWindowForcedOrientation); pw.print(" mForcedAppOrientation="); pw.println(mForcedAppOrientation); pw.print(" mDeferredRotationPauseCount="); pw.println(mDeferredRotationPauseCount); - pw.print(" mTraversalScheduled="); pw.print(mTraversalScheduled); - pw.print(" mWindowAnimationScale="); pw.print(mWindowAnimationScale); - pw.print(" mTransitionWindowAnimationScale="); pw.println(mTransitionAnimationScale); + if (mScreenRotationAnimation != null) { + pw.println(" mScreenRotationAnimation:"); + mScreenRotationAnimation.printTo(" ", pw); + } + pw.print(" mWindowAnimationScale="); pw.print(mWindowAnimationScale); + pw.print(" mTransitionWindowAnimationScale="); pw.print(mTransitionAnimationScale); pw.print(" mAnimatorDurationScale="); pw.println(mAnimatorDurationScale); - pw.print(" mNextAppTransition=0x"); + pw.print(" mTraversalScheduled="); pw.print(mTraversalScheduled); + pw.print(" mNextAppTransition=0x"); pw.print(Integer.toHexString(mNextAppTransition)); pw.print(" mAppTransitionReady="); pw.println(mAppTransitionReady); pw.print(" mAppTransitionRunning="); pw.print(mAppTransitionRunning); |