taking just one active surface only visible in display A not display B
- compositor A consumes surface ready buffer. The buffer queue associated with the surface now has put that ready buffer into a "current compositor buffer" - i.e. it's the buffer that the compositor will use if there's another compositing pass and no other ready buffers are available.
-- compositor A asks if there are any more ready buffers.
--- BufferQueue returns 0 ready buffers.
a. compositor B runs, figures out there are no visible surfaces for its area so doesn't consume anything from the buffer queue.
b. compositor B asks buffer queue if there are more ready buffers
c. buffer queue says 1 buffer is available - because it didn't consume the ready buffer as it wasn't visible on it.
d. repeat a-c indefinitely until surface actually is visible in display B
The issue is the following,
taking just one active surface only visible in display A not display B
- compositor A consumes surface ready buffer. The buffer queue associated with the surface now has put that ready buffer into a "current compositor buffer" - i.e. it's the buffer that the compositor will use if there's another compositing pass and no other ready buffers are available.
-- compositor A asks if there are any more ready buffers.
--- BufferQueue returns 0 ready buffers.
a. compositor B runs, figures out there are no visible surfaces for its area so doesn't consume anything from the buffer queue.
b. compositor B asks buffer queue if there are more ready buffers
c. buffer queue says 1 buffer is available - because it didn't consume the ready buffer as it wasn't visible on it.
d. repeat a-c indefinitely until surface actually is visible in display B