Revert to ICS screen rotation animation.
Change-Id: Ida76f17a00e4c8ab828deae51095107e4eeaa321
diff --git a/services/java/com/android/server/wm/ScreenRotationAnimation.java b/services/java/com/android/server/wm/ScreenRotationAnimation.java
index e460f7fd..3dcfd3c 100644
--- a/services/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -33,6 +33,7 @@
static final String TAG = "ScreenRotationAnimation";
static final boolean DEBUG_STATE = false;
static final boolean DEBUG_TRANSFORMS = false;
+ static final boolean TWO_PHASE_ANIMATION = false;
static final boolean USE_CUSTOM_BLACK_FRAME = false;
static final int FREEZE_LAYER = WindowManagerService.TYPE_LAYER_MULTIPLIER * 200;
@@ -44,7 +45,6 @@
BlackFrame mEnteringBlackFrame;
int mWidth, mHeight;
- int mSnapshotDeltaRotation;
int mOriginalRotation;
int mOriginalWidth, mOriginalHeight;
int mCurRotation;
@@ -138,10 +138,9 @@
if (mEnteringBlackFrame != null) {
mEnteringBlackFrame.printTo(prefix + " ", pw);
}
- pw.print(prefix); 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(prefix); pw.print("mCurRotation="); pw.print(mCurRotation);
+ pw.print(" mOriginalRotation="); pw.println(mOriginalRotation);
+ pw.print(prefix); 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);
@@ -306,8 +305,13 @@
public boolean setRotation(int rotation, SurfaceSession session,
long maxAnimationDuration, float animationScale, int finalWidth, int finalHeight) {
setRotation(rotation);
- return startAnimation(session, maxAnimationDuration, animationScale,
- finalWidth, finalHeight, false);
+ if (TWO_PHASE_ANIMATION) {
+ return startAnimation(session, maxAnimationDuration, animationScale,
+ finalWidth, finalHeight, false);
+ } else {
+ // Don't start animation yet.
+ return false;
+ }
}
/**
@@ -330,7 +334,8 @@
// Figure out how the screen has moved from the original rotation.
int delta = deltaRotation(mCurRotation, mOriginalRotation);
- if (mFinishExitAnimation == null && (!dismissing || delta != Surface.ROTATION_0)) {
+ if (TWO_PHASE_ANIMATION && mFinishExitAnimation == null
+ && (!dismissing || delta != Surface.ROTATION_0)) {
if (DEBUG_STATE) Slog.v(TAG, "Creating start and finish animations");
firstStart = true;
mStartExitAnimation = AnimationUtils.loadAnimation(mContext,
@@ -406,7 +411,7 @@
// means to allow supplying the last and next size. In this definition
// "%p" is the original (let's call it "previous") size, and "%" is the
// screen's current/new size.
- if (firstStart) {
+ if (TWO_PHASE_ANIMATION && firstStart) {
if (DEBUG_STATE) Slog.v(TAG, "Initializing start and finish animations");
mStartEnterAnimation.initialize(finalWidth, finalHeight,
halfWidth, halfHeight);
@@ -433,7 +438,7 @@
mFinishAnimReady = false;
mFinishAnimStartTime = -1;
- if (firstStart) {
+ if (TWO_PHASE_ANIMATION && firstStart) {
mStartExitAnimation.restrictDuration(maxAnimationDuration);
mStartExitAnimation.scaleCurrentDuration(animationScale);
mStartEnterAnimation.restrictDuration(maxAnimationDuration);
@@ -624,6 +629,14 @@
}
public boolean isAnimating() {
+ if (TWO_PHASE_ANIMATION) {
+ return hasAnimations() || mFinishAnimReady;
+ } else {
+ return hasAnimations();
+ }
+ }
+
+ private boolean hasAnimations() {
return mStartEnterAnimation != null || mStartExitAnimation != null
|| mStartFrameAnimation != null
|| mFinishEnterAnimation != null || mFinishExitAnimation != null
@@ -633,7 +646,6 @@
}
private boolean stepAnimation(long now) {
-
if (mFinishAnimReady && mFinishAnimStartTime < 0) {
if (DEBUG_STATE) Slog.v(TAG, "Step: finish anim now ready");
mFinishAnimStartTime = now;
@@ -794,6 +806,10 @@
}
void updateSurfaces() {
+ if (!mStarted) {
+ return;
+ }
+
if (mSurface != null) {
if (!mMoreStartExit && !mMoreFinishExit && !mMoreRotateExit) {
if (DEBUG_STATE) Slog.v(TAG, "Exit animations done, hiding screenshot surface");
@@ -834,7 +850,7 @@
}
public boolean stepAnimationLocked(long now) {
- if (!isAnimating()) {
+ if (!hasAnimations()) {
if (DEBUG_STATE) Slog.v(TAG, "Step: no animations running");
mFinishAnimReady = false;
return false;