From f151bfdd53d23f0c7ad0c4a15d0cb9c028e365bf Mon Sep 17 00:00:00 2001 From: Johannes Gallmann Date: Tue, 2 Apr 2024 17:35:45 +0200 Subject: [PATCH] Add vsync id to predictive back transactions Bug: 331808052 Flag: ACONFIG com.android.window.flags.predictive_back_system_anims TRUNKFOOD Test: Manual, i.e. recorded perfetto trace and verified that missedFrames metrics showed up Change-Id: I3dc5900ddedcb70467de7667f1555862dee5b45d --- .../quickstep/LauncherBackAnimationController.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java index 2d25295402..fa425f14c9 100644 --- a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java +++ b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java @@ -39,6 +39,7 @@ import android.os.Handler; import android.os.RemoteException; import android.util.Log; import android.util.Pair; +import android.view.Choreographer; import android.view.IRemoteAnimationFinishedCallback; import android.view.IRemoteAnimationRunner; import android.view.RemoteAnimationTarget; @@ -302,7 +303,7 @@ public class LauncherBackAnimationController { if (mScrimLayer == null) { addScrimLayer(); } - mTransaction.apply(); + applyTransaction(); } private void setLauncherTargetViewVisible(boolean isVisible) { @@ -342,7 +343,8 @@ public class LauncherBackAnimationController { return; } if (mScrimLayer.isValid()) { - mTransaction.remove(mScrimLayer).apply(); + mTransaction.remove(mScrimLayer); + applyTransaction(); } mScrimLayer = null; } @@ -396,7 +398,11 @@ public class LauncherBackAnimationController { mTransaction.setWindowCrop(mBackTarget.leash, mStartRect); mTransaction.setCornerRadius(mBackTarget.leash, cornerRadius); } + applyTransaction(); + } + private void applyTransaction() { + mTransaction.setFrameTimelineVsync(Choreographer.getInstance().getVsyncId()); mTransaction.apply(); } @@ -511,7 +517,7 @@ public class LauncherBackAnimationController { float value = (Float) animation.getAnimatedValue(); if (mScrimLayer != null && mScrimLayer.isValid()) { mTransaction.setAlpha(mScrimLayer, value * mScrimAlpha); - mTransaction.apply(); + applyTransaction(); } }); mScrimAlphaAnimator.addListener(new AnimatorListenerAdapter() {