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

Commit eea53b3c authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Avoid unecessary IPC during scrim animation

Bug: 69931869
Test: runtest systemui-jank -c android.platform.systemui.tests.jank.SystemUiJankTests -m testUnlock
Change-Id: Ifb6cf0baef4a0c68bd7c7e0ac33e57a4168ef027
parent 84a41d66
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -255,8 +255,13 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
            mKeyguardFadeoutAnimation.cancel();
        }

        // Do not let the device sleep until we're done with all animations
        // The device might sleep if it's entering AOD, we need to make sure that
        // the animation plays properly until the last frame.
        // It's important to avoid holding the wakelock unless necessary because
        // WakeLock#aqcuire will trigger an IPC and will cause jank.
        if (mState == ScrimState.AOD) {
            holdWakeLock();
        }

        // AOD wallpapers should fade away after a while
        if (mWallpaperSupportsAmbientMode && mDozeParameters.getAlwaysOn()
+9 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;

import android.animation.Animator;
@@ -275,7 +276,7 @@ public class ScrimControllerTest extends SysuiTestCase {
    }

    @Test
    public void testHoldsWakeLock() {
    public void testHoldsWakeLock_whenAOD() {
        mScrimController.transitionTo(ScrimState.AOD);
        verify(mWakeLock).acquire();
        verify(mWakeLock, never()).release();
@@ -283,6 +284,13 @@ public class ScrimControllerTest extends SysuiTestCase {
        verify(mWakeLock).release();
    }

    @Test
    public void testDoesNotHoldWakeLock_whenUnlocking() {
        mScrimController.transitionTo(ScrimState.UNLOCKED);
        mScrimController.finishAnimationsImmediately();
        verifyZeroInteractions(mWakeLock);
    }

    @Test
    public void testCallbackInvokedOnSameStateTransition() {
        mScrimController.transitionTo(ScrimState.UNLOCKED);