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

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

Postpone alarm IPC

Delaying it until the animation callback to improve parallelization.

Test: atest ScrimControllerTest
Fixes: 140630719
Change-Id: I5e6f29a082ef0d634f74f40ce65fd42f098080b6
parent 4bec4b2f
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.internal.graphics.ColorUtils;
import com.android.internal.util.function.TriConsumer;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.DejankUtils;
import com.android.systemui.Dependency;
import com.android.systemui.Dumpable;
import com.android.systemui.R;
@@ -311,10 +312,12 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
        // Docking pulses may take a long time, wallpapers should also fade away after a while.
        mWallpaperVisibilityTimedOut = false;
        if (shouldFadeAwayWallpaper()) {
            DejankUtils.postAfterTraversal(() -> {
                mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
                        AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
            });
        } else {
            mTimeTicker.cancel();
            DejankUtils.postAfterTraversal(mTimeTicker::cancel);
        }

        if (mKeyguardUpdateMonitor.needsSlowUnlockTransition() && mState == ScrimState.UNLOCKED) {
@@ -430,8 +433,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
            // and docking.
            if (mWallpaperVisibilityTimedOut) {
                mWallpaperVisibilityTimedOut = false;
                DejankUtils.postAfterTraversal(() -> {
                    mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
                            AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
                });
            }
        }
    }
+3 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import androidx.test.filters.SmallTest;
import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.internal.util.function.TriConsumer;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.DejankUtils;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -95,6 +96,7 @@ public class ScrimControllerTest extends SysuiTestCase {
        mDependency.injectMockDependency(KeyguardUpdateMonitor.class);
        when(mDozeParamenters.getAlwaysOn()).thenAnswer(invocation -> mAlwaysOnEnabled);
        when(mDozeParamenters.getDisplayNeedsBlanking()).thenReturn(true);
        DejankUtils.setImmediate(true);
        mScrimController = new SynchronousScrimController(mScrimBehind, mScrimInFront,
                mScrimForBubble,
                (scrimState, scrimBehindAlpha, scrimInFrontColor) -> {
@@ -113,6 +115,7 @@ public class ScrimControllerTest extends SysuiTestCase {
    @After
    public void tearDown() {
        mScrimController.finishAnimationsImmediately();
        DejankUtils.setImmediate(false);
    }

    @Test