Abort queued-sleep transition if display shouldn't sleep anymore
If a SLEEP gets queued due to an ongoing transition, there's a chance that, by the time it is executed, the display won't be sleeping anymore. In that case, we should abort the sleep. Bug: 283461350 Test: Use CtsControls and long-press home-controls on lockscreen Change-Id: I2465e1e98ed459bb7d8a459e175ecf2cbbd16fbc
This commit is contained in:
@@ -2357,10 +2357,14 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
|
||||
final Transition transition = new Transition(TRANSIT_SLEEP, 0 /* flags */,
|
||||
display.mTransitionController, mWmService.mSyncEngine);
|
||||
final TransitionController.OnStartCollect sendSleepTransition = (deferred) -> {
|
||||
display.mTransitionController.requestStartTransition(transition,
|
||||
null /* trigger */, null /* remote */, null /* display */);
|
||||
// Force playing immediately so that unrelated ops can't be collected.
|
||||
transition.playNow();
|
||||
if (deferred && !display.shouldSleep()) {
|
||||
transition.abort();
|
||||
} else {
|
||||
display.mTransitionController.requestStartTransition(transition,
|
||||
null /* trigger */, null /* remote */, null /* display */);
|
||||
// Force playing immediately so that unrelated ops can't be collected.
|
||||
transition.playNow();
|
||||
}
|
||||
};
|
||||
if (!display.mTransitionController.isCollecting()) {
|
||||
// Since this bypasses sync, submit directly ignoring whether sync-engine
|
||||
|
||||
Reference in New Issue
Block a user