summaryrefslogtreecommitdiff
path: root/libs/gui/BufferQueueConsumer.cpp
diff options
context:
space:
mode:
author Shuzhen Wang <shuzhenwang@google.com> 2019-08-14 10:41:12 -0700
committer Shuzhen Wang <shuzhenwang@google.com> 2019-09-03 16:48:02 -0700
commit067fcd36bc53a5f884108df5634cb1ca5549a30c (patch)
tree6676a28615ae2d7fe754a2de60b4ad38b1175233 /libs/gui/BufferQueueConsumer.cpp
parent5488416631c0a23ccef61975860f2755e8e8d834 (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.cpp10
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;
}
}