summaryrefslogtreecommitdiff
path: root/libs/gui/ConsumerBase.cpp
diff options
context:
space:
mode:
author Eino-Ville Talvala <etalvala@google.com> 2017-06-14 08:09:40 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-06-14 08:09:42 +0000
commitfd43dc6723e721c41fb5e0d84258672a036cc006 (patch)
treee966c89782519c17878f644b51a72ccba5c3a34a /libs/gui/ConsumerBase.cpp
parent638055ef41f6d248290c8867dd85c8a4690fa584 (diff)
parentc6ff79830b9126f948791f03164a58ad079e9e5d (diff)
Merge changes Ibc1444b8,I14c200d1 into oc-dev
* changes: ConsumerBase: discardFreeBuffers() also needs to dump its own cache BufferQueueProducer: Call onBuffersReleased() in detachNextBuffer
Diffstat (limited to 'libs/gui/ConsumerBase.cpp')
-rw-r--r--libs/gui/ConsumerBase.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/libs/gui/ConsumerBase.cpp b/libs/gui/ConsumerBase.cpp
index 5c6158c771..c2b10a91dd 100644
--- a/libs/gui/ConsumerBase.cpp
+++ b/libs/gui/ConsumerBase.cpp
@@ -253,7 +253,18 @@ status_t ConsumerBase::discardFreeBuffers() {
CB_LOGE("discardFreeBuffers: ConsumerBase is abandoned!");
return NO_INIT;
}
- return mConsumer->discardFreeBuffers();
+ status_t err = mConsumer->discardFreeBuffers();
+ if (err != OK) {
+ return err;
+ }
+ uint64_t mask;
+ mConsumer->getReleasedBuffers(&mask);
+ for (int i = 0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) {
+ if (mask & (1ULL << i)) {
+ freeBufferLocked(i);
+ }
+ }
+ return OK;
}
void ConsumerBase::dumpState(String8& result) const {