ecc504043f
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
(cherry picked from commit
|
||
---|---|---|
.. | ||
BitTube.h | ||
BufferItem.h | ||
BufferItemConsumer.h | ||
BufferQueue.h | ||
BufferQueueConsumer.h | ||
BufferQueueCore.h | ||
BufferQueueDefs.h | ||
BufferQueueProducer.h | ||
BufferSlot.h | ||
ConsumerBase.h | ||
CpuConsumer.h | ||
DisplayEventReceiver.h | ||
GLConsumer.h | ||
GraphicBufferAlloc.h | ||
GuiConfig.h | ||
IConsumerListener.h | ||
IDisplayEventConnection.h | ||
IGraphicBufferAlloc.h | ||
IGraphicBufferConsumer.h | ||
IGraphicBufferProducer.h | ||
IProducerListener.h | ||
ISensorEventConnection.h | ||
ISensorServer.h | ||
ISurfaceComposer.h | ||
ISurfaceComposerClient.h | ||
Sensor.h | ||
SensorEventQueue.h | ||
SensorManager.h | ||
StreamSplitter.h | ||
Surface.h | ||
SurfaceComposerClient.h | ||
SurfaceControl.h |