summaryrefslogtreecommitdiff
path: root/libs/gui/BufferQueueProducer.cpp
diff options
context:
space:
mode:
author Pablo Ceballos <pceballos@google.com> 2016-04-20 20:28:07 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-04-20 20:28:07 +0000
commit72b59753f90df64b3dd86fa6a166b24c8b64b985 (patch)
tree96ec287845b489980425421d9932b2d592facdab /libs/gui/BufferQueueProducer.cpp
parent4908a010f63c7d0a6d9a1f4b67c3453a116d1556 (diff)
parent245cc5b57da46d5852aa820be2a96f37425b3337 (diff)
Merge "BQ: Avoid unnecessary calls to consumer listener" into nyc-dev
Diffstat (limited to 'libs/gui/BufferQueueProducer.cpp')
-rw-r--r--libs/gui/BufferQueueProducer.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp
index 4c3bcd96fc..620cf8998a 100644
--- a/libs/gui/BufferQueueProducer.cpp
+++ b/libs/gui/BufferQueueProducer.cpp
@@ -101,6 +101,10 @@ status_t BufferQueueProducer::setMaxDequeuedBufferCount(
return NO_INIT;
}
+ if (maxDequeuedBuffers == mCore->mMaxDequeuedBufferCount) {
+ return NO_ERROR;
+ }
+
// The new maxDequeuedBuffer count should not be violated by the number
// of currently dequeued buffers
int dequeuedCount = 0;
@@ -175,6 +179,10 @@ status_t BufferQueueProducer::setAsyncMode(bool async) {
return NO_INIT;
}
+ if (async == mCore->mAsyncMode) {
+ return NO_ERROR;
+ }
+
if ((mCore->mMaxAcquiredBufferCount + mCore->mMaxDequeuedBufferCount +
(async || mCore->mDequeueBufferCannotBlock ? 1 : 0)) >
mCore->mMaxBufferCount) {
@@ -199,7 +207,9 @@ status_t BufferQueueProducer::setAsyncMode(bool async) {
mCore->mAsyncMode = async;
VALIDATE_CONSISTENCY();
mCore->mDequeueCondition.broadcast();
- listener = mCore->mConsumerListener;
+ if (delta < 0) {
+ listener = mCore->mConsumerListener;
+ }
} // Autolock scope
// Call back without lock held