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

Commit 38adc4c5 authored by Winson Chung's avatar Winson Chung Committed by Automerger Merge Worker
Browse files

Merge "Add additional tracing for nav button backgrounds" into rvc-dev am:...

Merge "Add additional tracing for nav button backgrounds" into rvc-dev am: e184e6c8 am: 8c9db5dd am: b6abd7b8

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11869885

Change-Id: I9cb009cbebe1365ce5591ab0826d0b53a5e0aaad
parents 6c7cf9bf b6abd7b8
Loading
Loading
Loading
Loading
+51 −17
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ import android.graphics.PixelFormat;
import android.graphics.RecordingCanvas;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.util.Log;
import android.os.Trace;
import android.view.RenderNodeAnimator;
import android.view.View;
import android.view.ViewConfiguration;
@@ -74,6 +74,11 @@ public class KeyButtonRipple extends Drawable {
    private final HashSet<Animator> mRunningAnimations = new HashSet<>();
    private final ArrayList<Animator> mTmpArray = new ArrayList<>();

    private final TraceAnimatorListener mExitHwTraceAnimator =
            new TraceAnimatorListener("exitHardware");
    private final TraceAnimatorListener mEnterHwTraceAnimator =
            new TraceAnimatorListener("enterHardware");

    public enum Type {
        OVAL,
        ROUNDED_RECT
@@ -221,7 +226,7 @@ public class KeyButtonRipple extends Drawable {

    @Override
    public void jumpToCurrentState() {
        cancelAnimations("jumpToCurrentState");
        endAnimations("jumpToCurrentState", false /* cancel */);
    }

    @Override
@@ -235,7 +240,6 @@ public class KeyButtonRipple extends Drawable {
    }

    public void setPressed(boolean pressed) {
        Log.d("b/63783866", "KeyButtonRipple.setPressed: pressed=" + pressed);
        if (mDark != mLastDark && pressed) {
            mRipplePaint = null;
            mLastDark = mDark;
@@ -255,14 +259,19 @@ public class KeyButtonRipple extends Drawable {
        mHandler.removeCallbacksAndMessages(null);
    }

    private void cancelAnimations(String reason) {
        Log.d("b/63783866", "KeyButtonRipple.cancelAnimations: reason=" + reason);
    private void endAnimations(String reason, boolean cancel) {
        Trace.beginSection("KeyButtonRipple.endAnim: reason=" + reason + " cancel=" + cancel);
        Trace.endSection();
        mVisible = false;
        mTmpArray.addAll(mRunningAnimations);
        int size = mTmpArray.size();
        for (int i = 0; i < size; i++) {
            Animator a = mTmpArray.get(i);
            if (cancel) {
                a.cancel();
            } else {
                a.end();
            }
        }
        mTmpArray.clear();
        mRunningAnimations.clear();
@@ -287,7 +296,7 @@ public class KeyButtonRipple extends Drawable {
    }

    private void enterSoftware() {
        cancelAnimations("enterSoftware");
        endAnimations("enterSoftware", true /* cancel */);
        mVisible = true;
        mGlowAlpha = getMaxGlowAlpha();
        ObjectAnimator scaleAnimator = ObjectAnimator.ofFloat(this, "glowScale",
@@ -373,8 +382,7 @@ public class KeyButtonRipple extends Drawable {
    }

    private void enterHardware() {
        Log.d("b/63783866", "enterHardware");
        cancelAnimations("enterHardware");
        endAnimations("enterHardware", true /* cancel */);
        mVisible = true;
        mDrawingHardwareGlow = true;
        setExtendStart(CanvasProperty.createFloat(getExtendSize() / 2));
@@ -391,6 +399,7 @@ public class KeyButtonRipple extends Drawable {
        endAnim.setDuration(ANIMATION_DURATION_SCALE);
        endAnim.setInterpolator(mInterpolator);
        endAnim.addListener(mAnimatorListener);
        endAnim.addListener(mEnterHwTraceAnimator);
        endAnim.setTarget(mTargetView);

        if (isHorizontal()) {
@@ -426,13 +435,13 @@ public class KeyButtonRipple extends Drawable {
    }

    private void exitHardware() {
        Log.d("b/63783866", "exitHardware");
        mPaintProp = CanvasProperty.createPaint(getRipplePaint());
        final RenderNodeAnimator opacityAnim = new RenderNodeAnimator(mPaintProp,
                RenderNodeAnimator.PAINT_ALPHA, 0);
        opacityAnim.setDuration(ANIMATION_DURATION_FADE);
        opacityAnim.setInterpolator(Interpolators.ALPHA_OUT);
        opacityAnim.addListener(mAnimatorListener);
        opacityAnim.addListener(mExitHwTraceAnimator);
        opacityAnim.setTarget(mTargetView);

        opacityAnim.start();
@@ -454,6 +463,31 @@ public class KeyButtonRipple extends Drawable {
                }
            };

    private static final class TraceAnimatorListener extends AnimatorListenerAdapter {
        private final String mName;
        TraceAnimatorListener(String name) {
            mName = name;
        }

        @Override
        public void onAnimationStart(Animator animation) {
            Trace.beginSection("KeyButtonRipple.start." + mName);
            Trace.endSection();
        }

        @Override
        public void onAnimationCancel(Animator animation) {
            Trace.beginSection("KeyButtonRipple.cancel." + mName);
            Trace.endSection();
        }

        @Override
        public void onAnimationEnd(Animator animation) {
            Trace.beginSection("KeyButtonRipple.end." + mName);
            Trace.endSection();
        }
    }

    /**
     * Interpolator with a smooth log deceleration
     */