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
|
||
---|---|---|
.. | ||
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 |