78014f32da
BufferQueueProducer::allocateBuffers used to keep the BufferQueueCore
mutex while doing the buffer allocation, which would cause the consumer
(which also needs the mutex) to block if the allocation takes a long
time.
Instead, release the mutex while doing the allocation, and grab it again
before filling the slots. Keep a bool state and a condvar to prevent
other producers from trying to allocate the slots while the mutex is
released.
Bug: 11792166
Change-Id: I4ab1319995ef892be2beba892f1fdbf50ce0416d
(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 |