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

Commit 2c9d7d81 authored by Johannes Gallmann's avatar Johannes Gallmann Committed by Android (Google) Code Review
Browse files

Merge "Add vsync id to predictive back transactions" into main

parents ee6b92bd 5767ffa6
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.graphics.PointF
import android.graphics.Rect
import android.graphics.RectF
import android.os.RemoteException
import android.view.Choreographer
import android.view.Display
import android.view.IRemoteAnimationFinishedCallback
import android.view.IRemoteAnimationRunner
@@ -137,7 +138,7 @@ class CrossActivityBackAnimation @Inject constructor(
            enteringTarget!!.taskInfo.taskDescription!!.backgroundColor, transaction
        )
        ensureScrimLayer()
        transaction.apply()
        applyTransaction()
    }

    private fun onGestureProgress(backEvent: BackEvent) {
@@ -150,7 +151,7 @@ class CrossActivityBackAnimation @Inject constructor(
        currentEnteringRect.setInterpolatedRectF(startEnteringRect, targetEnteringRect, progress)
        currentEnteringRect.offset(0f, yOffset)
        applyTransform(enteringTarget?.leash, currentEnteringRect, 1f)
        transaction.apply()
        applyTransaction()
    }

    private fun getYOffset(centeredRect: RectF, touchY: Float): Float {
@@ -210,7 +211,7 @@ class CrossActivityBackAnimation @Inject constructor(
        applyTransform(closingTarget?.leash, currentClosingRect, closingAlpha)
        currentEnteringRect.setInterpolatedRectF(startEnteringRect, targetEnteringRect, progress)
        applyTransform(enteringTarget?.leash, currentEnteringRect, 1f)
        transaction.apply()
        applyTransaction()
    }

    private fun finishAnimation() {
@@ -226,7 +227,7 @@ class CrossActivityBackAnimation @Inject constructor(
        closingTarget = null

        background.removeBackground(transaction)
        transaction.apply()
        applyTransaction()
        transformMatrix.reset()
        initialTouchPos.set(0f, 0f)
        try {
@@ -250,6 +251,11 @@ class CrossActivityBackAnimation @Inject constructor(
            .setCornerRadius(leash, cornerRadius)
    }

    private fun applyTransaction() {
        transaction.setFrameTimelineVsync(Choreographer.getInstance().vsyncId)
        transaction.apply()
    }

    private fun ensureScrimLayer() {
        if (scrimLayer != null) return
        val isDarkTheme: Boolean = isDarkMode(context)
@@ -275,7 +281,8 @@ class CrossActivityBackAnimation @Inject constructor(
    private fun removeScrimLayer() {
        scrimLayer?.let {
            if (it.isValid) {
                transaction.remove(it).apply()
                transaction.remove(it)
                applyTransaction()
            }
        }
        scrimLayer = null
@@ -287,7 +294,7 @@ class CrossActivityBackAnimation @Inject constructor(
            // in case we're still animating an onBackCancelled event, let's remove the finish-
            // callback from the progress animator to prevent calling finishAnimation() before
            // restarting a new animation
            progressAnimator.removeOnBackCancelledFinishCallback();
            progressAnimator.removeOnBackCancelledFinishCallback()

            startBackAnimation(backMotionEvent)
            progressAnimator.onBackStarted(backMotionEvent) { backEvent: BackEvent ->
+9 −4
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.RemoteException;
import android.view.Choreographer;
import android.view.IRemoteAnimationFinishedCallback;
import android.view.IRemoteAnimationRunner;
import android.view.RemoteAnimationTarget;
@@ -192,7 +193,7 @@ public class CrossTaskBackAnimation extends ShellBackAnimation {

        applyTransform(mClosingTarget.leash, mClosingCurrentRect, mCornerRadius);
        applyTransform(mEnteringTarget.leash, mEnteringCurrentRect, mCornerRadius);
        mTransaction.apply();
        applyTransaction();

        mBackground.onBackProgressed(progress);
    }
@@ -242,6 +243,11 @@ public class CrossTaskBackAnimation extends ShellBackAnimation {
                .setCornerRadius(leash, cornerRadius);
    }

    private void applyTransaction() {
        mTransaction.setFrameTimelineVsync(Choreographer.getInstance().getVsyncId());
        mTransaction.apply();
    }

    private void finishAnimation() {
        if (mEnteringTarget != null) {
            mEnteringTarget.leash.release();
@@ -255,8 +261,7 @@ public class CrossTaskBackAnimation extends ShellBackAnimation {
        if (mBackground != null) {
            mBackground.removeBackground(mTransaction);
        }

        mTransaction.apply();
        applyTransaction();
        mBackInProgress = false;
        mTransformMatrix.reset();
        mClosingCurrentRect.setEmpty();
@@ -303,7 +308,7 @@ public class CrossTaskBackAnimation extends ShellBackAnimation {
            if (progress > 1 - UPDATE_SYSUI_FLAGS_THRESHOLD) {
                mBackground.resetStatusBarCustomization();
            }
            mTransaction.apply();
            applyTransaction();
        });

        valueAnimator.addListener(new AnimatorListenerAdapter() {