diff options
| author | 2019-08-14 10:41:12 -0700 | |
|---|---|---|
| committer | 2019-09-03 16:48:02 -0700 | |
| commit | 067fcd36bc53a5f884108df5634cb1ca5549a30c (patch) | |
| tree | 6676a28615ae2d7fe754a2de60b4ad38b1175233 /libs/gui/BufferQueueConsumer.cpp | |
| parent | 5488416631c0a23ccef61975860f2755e8e8d834 (diff) | |
libgui: Add discardFreeBuffers callback to producer
This enables buffer producer to clear its buffer caches.
Test: Camera CTS, libgui_test
Bug: 136677409
Change-Id: I7f46e977f3edc3b08177654531745d8ca0b86889
Diffstat (limited to 'libs/gui/BufferQueueConsumer.cpp')
| -rw-r--r-- | libs/gui/BufferQueueConsumer.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp index 528bfb194e..3a7cb44450 100644 --- a/libs/gui/BufferQueueConsumer.cpp +++ b/libs/gui/BufferQueueConsumer.cpp @@ -166,7 +166,9 @@ status_t BufferQueueConsumer::acquireBuffer(BufferItem* outBuffer, mCore->mFreeBuffers.push_back(front->mSlot); } - listener = mCore->mConnectedProducerListener; + if (mCore->mBufferReleasedCbEnabled) { + listener = mCore->mConnectedProducerListener; + } ++numDroppedBuffers; } @@ -457,7 +459,9 @@ status_t BufferQueueConsumer::releaseBuffer(int slot, uint64_t frameNumber, mCore->mFreeBuffers.push_back(slot); } - listener = mCore->mConnectedProducerListener; + if (mCore->mBufferReleasedCbEnabled) { + listener = mCore->mConnectedProducerListener; + } BQ_LOGV("releaseBuffer: releasing slot %d", slot); mCore->mDequeueCondition.notify_all(); @@ -668,7 +672,7 @@ status_t BufferQueueConsumer::setMaxAcquiredBufferCount( BQ_LOGV("setMaxAcquiredBufferCount: %d", maxAcquiredBuffers); mCore->mMaxAcquiredBufferCount = maxAcquiredBuffers; VALIDATE_CONSISTENCY(); - if (delta < 0) { + if (delta < 0 && mCore->mBufferReleasedCbEnabled) { listener = mCore->mConsumerListener; } } |