• Antoine Labour's avatar
    BufferQueue: release mutex while allocating. DO NOT MERGE · 78014f32
    Antoine Labour authored
    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 ea960444)
    78014f32
BufferQueueCore.h 10.3 KB