• Dan Stoza's avatar
    SurfaceFlinger: Fix PTS on stale buffers · 2e36f228
    Dan Stoza authored
    SurfaceFlinger's (Layer's) shadow copy of the BufferQueue queue was
    getting out of sync for a few reasons. This change fixes these by
    doing the following:
    
    - Adds a check to re-synchronize the shadow copy every time we
      successfully acquire a buffer by first dropping stale buffers before
      removing the current buffer.
    - Avoids trying to perform updates for buffers which have been rejected
      (for incorrect dimensions) by SurfaceFlinger.
    - Adds IGraphicBufferConsumer::setShadowQueueSize, which allows the
      consumer to notify the BufferQueue that it is maintaining a shadow
      copy of the queue and prevents it from dropping so many buffers
      during acquireBuffer that it ends up returning a buffer for which the
      consumer has not yet received an onFrameAvailable call.
    
    Bug: 20096136
    Change-Id: I78d0738428005fc19b3be85cc8f1db498043612f
    2e36f228
BufferQueueConsumer.cpp 20.2 KB