Skip to content
Commit 66855315 authored by Karthik Ravi Shankar's avatar Karthik Ravi Shankar
Browse files

Fix race condition when entering low persistence mode



The problem is that -

1) When the device enters a VR activity directly from screen off, there
   is a chance the device is not in low persistence mode and ghosting is
   really bad.
2) LocalDisplayAdapter gets to know that the device is in VR mode later
   than PowerManagerService due to scheduling of it's runnable.
3) The call to Lights HAL to change the display mode only is made only
   when there is a brightness change.
4) This opens up a race condition where the PowerManagerService knows device
   is in VR mode and changes the brightness to VR brightness before the
   LocalDisplayAdapter knows about the VR mode change.
5) Since there is no more brightness change to be done, the device is
   not in low persistence mode creating really bad UX.

Fix is to trigger a brightness change call when there is a Display state
change so that LocalDisplayAdapter sets the low persistence mode
correctly always.

Bug: 67114120
Test:

1) Lock and unlock to VR puts the device in low persistence mode
   correctly always.
2) Lock and unlock in normal mode changes brightness correctly.
3) Even with lockscreen, all of the use cases above work correctly.

Change-Id: Ic0e6d92ba145aaa94f86e6d53ab5aa08cbbae10c
Signed-off-by: default avatarKarthik Ravi Shankar <karthikrs@google.com>
parent b986ebce
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment