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
|
||
---|---|---|
.. | ||
tests | ||
Android.mk | ||
BitTube.cpp | ||
BufferItem.cpp | ||
BufferItemConsumer.cpp | ||
BufferQueue.cpp | ||
BufferQueueConsumer.cpp | ||
BufferQueueCore.cpp | ||
BufferQueueProducer.cpp | ||
BufferSlot.cpp | ||
CleanSpec.mk | ||
ConsumerBase.cpp | ||
CpuConsumer.cpp | ||
DisplayEventReceiver.cpp | ||
GLConsumer.cpp | ||
GraphicBufferAlloc.cpp | ||
GuiConfig.cpp | ||
IConsumerListener.cpp | ||
IDisplayEventConnection.cpp | ||
IGraphicBufferAlloc.cpp | ||
IGraphicBufferConsumer.cpp | ||
IGraphicBufferProducer.cpp | ||
IProducerListener.cpp | ||
ISensorEventConnection.cpp | ||
ISensorServer.cpp | ||
ISurfaceComposer.cpp | ||
ISurfaceComposerClient.cpp | ||
LayerState.cpp | ||
Sensor.cpp | ||
SensorEventQueue.cpp | ||
SensorManager.cpp | ||
StreamSplitter.cpp | ||
Surface.cpp | ||
SurfaceComposerClient.cpp | ||
SurfaceControl.cpp | ||
SyncFeatures.cpp |