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

Commit ec5b5156 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

Merge "Fix issue where screen rotations would stop animating."

parents 0bbd872e 4dcece8e
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);