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

Commit 64e398ac authored by Qiushi.Han's avatar Qiushi.Han Committed by Zhao Wei Liew
Browse files

Fix window transformation related issue

In some cases, for example, a window containing a SurfaceView,
when pressing switch button, the window animation of SurfaceView
and it's attached window are not sync, which leads animation not
behaving correctly.

To avoid this, apply the translation that applies the position
of the window before the app transformation.

Google issue:
https://code.google.com/p/android/issues/detail?id=225134

Change-Id: Ie8ddb875e895942c7f28e6fc83c4f92568512efb
(cherry picked from commit 7a9053ac)
parent a43de3a7
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -1013,15 +1013,10 @@ class WindowStateAnimator {
            if (attachedTransformation != null) {
                tmpMatrix.postConcat(attachedTransformation.getMatrix());
            }
            tmpMatrix.postTranslate(frame.left + mWin.mXOffset, frame.top + mWin.mYOffset);
            if (appTransformation != null) {
                tmpMatrix.postConcat(appTransformation.getMatrix());
            }

            // The translation that applies the position of the window needs to be applied at the
            // end in case that other translations include scaling. Otherwise the scaling will
            // affect this translation. But it needs to be set before the screen rotation animation
            // so the pivot point is at the center of the screen for all windows.
            tmpMatrix.postTranslate(frame.left + mWin.mXOffset, frame.top + mWin.mYOffset);
            if (screenAnimation) {
                tmpMatrix.postConcat(screenRotationAnimation.getEnterTransformation().getMatrix());
            }