Merge "Fix issue where screen rotations would stop animating."
This commit is contained in:
committed by
Android (Google) Code Review
commit
ec5b5156e7
@ -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;
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user