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

Commit f3306171 authored by Evan Rosky's avatar Evan Rosky
Browse files

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
parent 4188bb6e
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -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) -> {
                    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