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

Skip to content
Commit 3c90e2ea authored by Nicolo' Mazzucato's avatar Nicolo' Mazzucato Committed by Android Build Coastguard Worker
Browse files

Fix DisplayManager race condition when state is unknown

The race was happening when:

1. STATE_UNKNOWN arrives to PhotonicModulator#setState.
2. Inside PhotonicModulator#setState, mStateChangeInprogress is set to true, and the setState method finishes.
3. in the run loop, in one iteration, we reach mLock.wait() (with mStateChangeInprogress still set to true, as the state changed from something to unknown). Now, setState can be executed again as the lock is not held anymore.
4. A new PhotonicModulator#setState arrives. however, mStateChangeInProgress is true, so mLock.notifyAll() is not called anymore.

It was previously fixed by I903f6392cbe42031aab8ffdbfbe541463d6b5e01 making the display not going to UNKNOWN state anymore, but this cl fixes the general case and revert the changes to set the display to off in `onDisplayChanged`.

Bug: 262294651
Test: Running foldable test suite for 20 times with abtd: before the fix it had high flakiness, after it had 0% flakiness. There are no tests for DisplayPowerState currently.
Change-Id: I165b260d60e03c8e4707c7704847c77a225fd43d
(cherry picked from commit e4fccc2d)
Merged-In: I165b260d60e03c8e4707c7704847c77a225fd43d
parent 068ea566
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment