Skip to content
Commit d1ada44d authored by chaviw's avatar chaviw Committed by Evan Rosky
Browse files

Prevent windows from drawing if they're in an active sync set

If a window is in a sync, but it already drew it's sync buffer, it
normally would be allowed to continue processing draws and just block
when it runs out of buffers. It would unblock once the sync is complete
at the sync buffer was sent to SF. However, this has a few issues

1. In some cases, WMS wants to retry the draw again due to configuration
   changes. This could cause deadlocks because the client may already be
   blocked since there are no more buffers. Instead, the client will
   block and WMS would be responsible for dropping the last buffer and
   notifying the client that it can draw for a sync again

2. If there are multiple UI threads, each can block each other due to
   the shared Render Thread. If one of the windows in the sync continues
   to draw and then blocks RT due to no more buffers, all other UI
   threads are unable to draw. If the behavior in 1 is desired, we'd
   need to make sure no one in the same sync continues to draw until
   everyone is complete. This is to ensure dropping will actually allow
   another render to occur. If other windows are blocking the RT, then
   even with dropping, the requested sync window cannot get another buffer
   and will cause a deadlock.

Test: Current sync requests work
Bug: 233625646
Change-Id: I3a0a4f36bf61a6677507672578e447060b806651
parent c4ede8e6
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