Bug P1
Status Update
Comments
ap...@google.com <ap...@google.com> #2
Thank you for reporting this issue.For us to further investigate this issue, please provide the following additional information:
Please provide the bugreport immediately after the issue is reproduced.We need bugreport to investigate this issue.
Android bug report (to be captured after reproducing the issue)
For steps to capture a bug report, please refer:https://developer.android.com/studio/debug/bug-report#bugreportdevice
Alternate method:
Navigate to “Developer options”, ensure “USB debugging” is enabled, then enable “Bug report shortcut”. Capture bug report by holding the power button and selecting the “Take bug report” option.
Note: Please upload the files to google drive and share the folder to android-bugreport@google.com, then share the link here.
Please provide the bugreport immediately after the issue is reproduced.We need bugreport to investigate this issue.
Android bug report (to be captured after reproducing the issue)
For steps to capture a bug report, please refer:
Alternate method:
Navigate to “Developer options”, ensure “USB debugging” is enabled, then enable “Bug report shortcut”. Capture bug report by holding the power button and selecting the “Take bug report” option.
Note: Please upload the files to google drive and share the folder to android-bugreport@google.com, then share the link here.
Description
At the same time, Controller::DisplayEngineListenerOnDisplayVsync() still does its processing on the thread it's called on. In a Banjo world, this is the display engine driver's interrupt handling thread, or the driver's artificial VSync generation thread.
This means VSync processing can occur before a display is fully registered in Controller::displays_. This is the long-term state we want to be in -- processing a newly added display can take a while, and we don't want that display to be available in displays_, where it can be used by various API calls.
This issue tracks creating a new data structure to track displays that have been reported by display drivers, but have not yet registered with the Coordinator. This data structure will be thread-safe, and will be accessed by DisplayEngineListenerOnDisplayAdded(), DisplayEngineListenerOnDisplayRemoved(), AddDisplay(), and DisplayEngineListenerOnDisplayVsync() -- the latter will fall back to checking this structure if the display_ lookup fails.