diff options
author | 2017-06-14 08:09:40 +0000 | |
---|---|---|
committer | 2017-06-14 08:09:42 +0000 | |
commit | fd43dc6723e721c41fb5e0d84258672a036cc006 (patch) | |
tree | e966c89782519c17878f644b51a72ccba5c3a34a /libs/gui/ConsumerBase.cpp | |
parent | 638055ef41f6d248290c8867dd85c8a4690fa584 (diff) | |
parent | c6ff79830b9126f948791f03164a58ad079e9e5d (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.cpp | 13 |
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 { |