Postpone alarm IPC
Delaying it until the animation callback to improve parallelization. Test: atest ScrimControllerTest Fixes: 140630719 Change-Id: I5e6f29a082ef0d634f74f40ce65fd42f098080b6
This commit is contained in:
@@ -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()) {
|
||||
mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
|
||||
AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
|
||||
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;
|
||||
mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
|
||||
AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
|
||||
DejankUtils.postAfterTraversal(() -> {
|
||||
mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
|
||||
AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user