Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55ba110d authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am ec5b5156: Merge "Fix issue where screen rotations would stop animating."

* commit 'ec5b5156':
  Fix issue where screen rotations would stop animating.
parents 47960677 ec5b5156
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -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;
+12 −11
Original line number Diff line number Diff line
@@ -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,10 +9915,14 @@ 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);
            if (mScreenRotationAnimation != null) {
                pw.println("  mScreenRotationAnimation:");
                mScreenRotationAnimation.printTo("    ", pw);
            }
            pw.print("  mWindowAnimationScale="); pw.print(mWindowAnimationScale);
                    pw.print(" mTransitionWindowAnimationScale="); pw.println(mTransitionAnimationScale);
                    pw.print(" mTransitionWindowAnimationScale="); pw.print(mTransitionAnimationScale);
                    pw.print(" mAnimatorDurationScale="); pw.println(mAnimatorDurationScale);
            pw.print("  mTraversalScheduled="); pw.print(mTraversalScheduled);
                    pw.print("  mNextAppTransition=0x");
                    pw.print(Integer.toHexString(mNextAppTransition));
                    pw.print(" mAppTransitionReady="); pw.println(mAppTransitionReady);