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

Commit 90978850 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Fix jank in wake-and-unlock while pulsing

- Don't hide keyguard after the animation is done, because this
would cause a measure in the middle of the fade animation.
- Don't use a layer for the notification panel in this case - we
don't need it and it only adds latency.
- Speed up the whole thing a bit because the animation is now
smoother.

Bug: 23225107
Change-Id: Ie8264c4d0e62bd6a78227e04b9900b4348ddd649
parent 71448a70
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -2388,4 +2388,9 @@ public class NotificationPanelView extends PanelView implements
    protected boolean isPanelVisibleBecauseOfHeadsUp() {
        return mHeadsUpManager.hasPinnedHeadsUp() || mHeadsUpAnimatingAway;
    }

    @Override
    public boolean hasOverlappingRendering() {
        return !mDozing;
    }
}
+3 −11
Original line number Diff line number Diff line
@@ -231,7 +231,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,

    public static final int FADE_KEYGUARD_START_DELAY = 100;
    public static final int FADE_KEYGUARD_DURATION = 300;
    public static final int FADE_KEYGUARD_DURATION_PULSING = 120;
    public static final int FADE_KEYGUARD_DURATION_PULSING = 96;

    /** Allow some time inbetween the long press for back and recents. */
    private static final int LOCK_TO_APP_GESTURE_TOLERENCE = 200;
@@ -3440,16 +3440,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
                .alpha(0f)
                .setStartDelay(0)
                .setDuration(FADE_KEYGUARD_DURATION_PULSING)
                .setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR)
                .withLayer()
                .withEndAction(new Runnable() {
                    @Override
                    public void run() {
                        mNotificationPanel.setAlpha(1f);
                        hideKeyguard();
                    }
                })
                .start();
                .setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR);
    }

    /**
@@ -3502,6 +3493,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
            mQSPanel.refreshAllTiles();
        }
        mHandler.removeMessages(MSG_LAUNCH_TRANSITION_TIMEOUT);
        mNotificationPanel.setAlpha(1f);
        return staying;
    }

+15 −2
Original line number Diff line number Diff line
@@ -279,10 +279,15 @@ public class StatusBarKeyguardViewManager {
            if (mFingerprintUnlockController.getMode()
                    == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING) {
                mFingerprintUnlockController.startKeyguardFadingAway();
                mPhoneStatusBar.setKeyguardFadingAway(startTime, 0, 250);
                mPhoneStatusBar.setKeyguardFadingAway(startTime, 0, 240);
                mStatusBarWindowManager.setKeyguardFadingAway(true);
                mPhoneStatusBar.fadeKeyguardWhilePulsing();
                animateScrimControllerKeyguardFadingOut(0, 250);
                animateScrimControllerKeyguardFadingOut(0, 240, new Runnable() {
                    @Override
                    public void run() {
                        mPhoneStatusBar.hideKeyguard();
                    }
                });
            } else {
                mFingerprintUnlockController.startKeyguardFadingAway();
                mPhoneStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration);
@@ -316,10 +321,18 @@ public class StatusBarKeyguardViewManager {
    }

    private void animateScrimControllerKeyguardFadingOut(long delay, long duration) {
        animateScrimControllerKeyguardFadingOut(delay, duration, null /* endRunnable */);
    }

    private void animateScrimControllerKeyguardFadingOut(long delay, long duration,
            final Runnable endRunnable) {
        Trace.asyncTraceBegin(Trace.TRACE_TAG_VIEW, "Fading out", 0);
        mScrimController.animateKeyguardFadingOut(delay, duration, new Runnable() {
            @Override
            public void run() {
                if (endRunnable != null) {
                    endRunnable.run();
                }
                mStatusBarWindowManager.setKeyguardFadingAway(false);
                mPhoneStatusBar.finishKeyguardFadingAway();
                mFingerprintUnlockController.finishKeyguardFadingAway();