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

Commit 45e2d8fa authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Optimize latency when closing panel with animation

The interpolator we chose had a very slow easy out where it
generated out frame with mExpandedHeight=0.3 pixels. We add a
check there and stop the animation immediately if this happens.

Furthermore, we just use a simple post when closing the panel
to not add to much latency. The frame will be shown in any case
since we are already in animation/input callback, such that a post
will be executed after the frame has been sent to RT.

Test: Capture trace, unlock phone, make sure no delays
Change-Id: I9fc45f4b081bd6143da1ba99e9bc652a9f64e4a7
Fixes: 38294347
parent 95cf170c
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -34,10 +34,9 @@ import android.view.animation.Interpolator;
import android.widget.FrameLayout;

import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.keyguard.LatencyTracker;
import com.android.systemui.DejankUtils;
import com.android.systemui.EventLogTags;
import com.android.systemui.Interpolators;
import com.android.keyguard.LatencyTracker;
import com.android.systemui.R;
import com.android.systemui.classifier.FalsingManager;
import com.android.systemui.doze.DozeLog;
@@ -833,6 +832,14 @@ public abstract class PanelView extends FrameLayout {
            }
        }

        // If we are closing the panel and we are almost there due to a slow decelerating
        // interpolator, abort the animation.
        if (mExpandedHeight < 1f && mExpandedHeight != 0f && mClosing) {
            mExpandedHeight = 0f;
            if (mHeightAnimator != null) {
                mHeightAnimator.end();
            }
        }
        mExpandedFraction = Math.min(1f,
                fhWithoutOverExpansion == 0 ? 0 : mExpandedHeight / fhWithoutOverExpansion);
        onHeightUpdated(mExpandedHeight);
+2 −2
Original line number Diff line number Diff line
@@ -121,12 +121,12 @@ public class PhoneStatusBarView extends PanelBar {
    public void onPanelCollapsed() {
        super.onPanelCollapsed();
        // Close the status bar in the next frame so we can show the end of the animation.
        DejankUtils.postAfterTraversal(mHideExpandedRunnable);
        post(mHideExpandedRunnable);
        mIsFullyOpenedPanel = false;
    }

    public void removePendingHideExpandedRunnables() {
        DejankUtils.removeCallbacks(mHideExpandedRunnable);
        removeCallbacks(mHideExpandedRunnable);
    }

    @Override