Merge "BQ: Avoid unnecessary calls to consumer listener" into nyc-dev
am: 72b5975
* commit '72b59753f90df64b3dd86fa6a166b24c8b64b985':
BQ: Avoid unnecessary calls to consumer listener
Change-Id: I06c0cf4383e2e3c9c0d3589b8fedc4464ca9c373
diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp
index b591c4e..cbc8893 100644
--- a/libs/gui/BufferQueueConsumer.cpp
+++ b/libs/gui/BufferQueueConsumer.cpp
@@ -622,6 +622,10 @@
return NO_INIT;
}
+ if (maxAcquiredBuffers == mCore->mMaxAcquiredBufferCount) {
+ return NO_ERROR;
+ }
+
// The new maxAcquiredBuffers count should not be violated by the number
// of currently acquired buffers
int acquiredCount = 0;
diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp
index 4c3bcd9..620cf89 100644
--- a/libs/gui/BufferQueueProducer.cpp
+++ b/libs/gui/BufferQueueProducer.cpp
@@ -101,6 +101,10 @@
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 @@
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 @@
mCore->mAsyncMode = async;
VALIDATE_CONSISTENCY();
mCore->mDequeueCondition.broadcast();
- listener = mCore->mConsumerListener;
+ if (delta < 0) {
+ listener = mCore->mConsumerListener;
+ }
} // Autolock scope
// Call back without lock held