diff options
| author | 2016-04-20 20:28:07 +0000 | |
|---|---|---|
| committer | 2016-04-20 20:28:07 +0000 | |
| commit | 72b59753f90df64b3dd86fa6a166b24c8b64b985 (patch) | |
| tree | 96ec287845b489980425421d9932b2d592facdab /libs/gui/BufferQueueProducer.cpp | |
| parent | 4908a010f63c7d0a6d9a1f4b67c3453a116d1556 (diff) | |
| parent | 245cc5b57da46d5852aa820be2a96f37425b3337 (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.cpp | 12 |
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 |