2e36f2283f
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 |
||
---|---|---|
.. | ||
DisplayHardware | ||
Effects | ||
EventLog | ||
RenderEngine | ||
tests | ||
Android.mk | ||
Barrier.h | ||
Client.cpp | ||
Client.h | ||
clz.h | ||
Colorizer.h | ||
DdmConnection.cpp | ||
DdmConnection.h | ||
DisplayDevice.cpp | ||
DisplayDevice.h | ||
DispSync.cpp | ||
DispSync.h | ||
EventControlThread.cpp | ||
EventControlThread.h | ||
EventThread.cpp | ||
EventThread.h | ||
FrameTracker.cpp | ||
FrameTracker.h | ||
Layer.cpp | ||
Layer.h | ||
LayerDim.cpp | ||
LayerDim.h | ||
main_surfaceflinger.cpp | ||
MessageQueue.cpp | ||
MessageQueue.h | ||
MODULE_LICENSE_APACHE2 | ||
MonitoredProducer.cpp | ||
MonitoredProducer.h | ||
SurfaceFlinger.cpp | ||
SurfaceFlinger.h | ||
SurfaceFlingerConsumer.cpp | ||
SurfaceFlingerConsumer.h | ||
Transform.cpp | ||
Transform.h |