diff options
| author | 2022-11-02 16:07:31 +0000 | |
|---|---|---|
| committer | 2022-11-02 16:07:31 +0000 | |
| commit | 3681e5a1cb88ea9762daedb4770c03b9858802f0 (patch) | |
| tree | bdacf87c538abf0c59279979f7b4ef74814ebd93 /libs/gui/BLASTBufferQueue.cpp | |
| parent | 4c9142ee597fe7445d5363e7e57d43c0bcc6dc9c (diff) | |
| parent | 28fe2e694f5cafaf0eaad1417e15fdee2943b15b (diff) | |
Merge "BBQ: Check if the buffer is already in the pending release queue before logging"
Diffstat (limited to 'libs/gui/BLASTBufferQueue.cpp')
| -rw-r--r-- | libs/gui/BLASTBufferQueue.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp index 0021bd6cc3..97e45c6d47 100644 --- a/libs/gui/BLASTBufferQueue.cpp +++ b/libs/gui/BLASTBufferQueue.cpp @@ -360,11 +360,12 @@ void BLASTBufferQueue::transactionCallback(nsecs_t /*latchTime*/, const sp<Fence } } for (const auto& staleRelease : staleReleases) { - BQA_LOGE("Faking releaseBufferCallback from transactionCompleteCallback"); - BBQ_TRACE("FakeReleaseCallback"); releaseBufferCallbackLocked(staleRelease, - stat.previousReleaseFence ? stat.previousReleaseFence : Fence::NO_FENCE, - stat.currentMaxAcquiredBufferCount); + stat.previousReleaseFence + ? stat.previousReleaseFence + : Fence::NO_FENCE, + stat.currentMaxAcquiredBufferCount, + true /* fakeRelease */); } } else { BQA_LOGE("Failed to find matching SurfaceControl in transactionCallback"); @@ -408,11 +409,13 @@ void BLASTBufferQueue::releaseBufferCallback( BBQ_TRACE(); std::unique_lock _lock{mMutex}; - releaseBufferCallbackLocked(id, releaseFence, currentMaxAcquiredBufferCount); + releaseBufferCallbackLocked(id, releaseFence, currentMaxAcquiredBufferCount, + false /* fakeRelease */); } -void BLASTBufferQueue::releaseBufferCallbackLocked(const ReleaseCallbackId& id, - const sp<Fence>& releaseFence, std::optional<uint32_t> currentMaxAcquiredBufferCount) { +void BLASTBufferQueue::releaseBufferCallbackLocked( + const ReleaseCallbackId& id, const sp<Fence>& releaseFence, + std::optional<uint32_t> currentMaxAcquiredBufferCount, bool fakeRelease) { ATRACE_CALL(); BQA_LOGV("releaseBufferCallback %s", id.to_string().c_str()); @@ -435,6 +438,11 @@ void BLASTBufferQueue::releaseBufferCallbackLocked(const ReleaseCallbackId& id, auto rb = ReleasedBuffer{id, releaseFence}; if (std::find(mPendingRelease.begin(), mPendingRelease.end(), rb) == mPendingRelease.end()) { mPendingRelease.emplace_back(rb); + if (fakeRelease) { + BQA_LOGE("Faking releaseBufferCallback from transactionCompleteCallback %" PRIu64, + id.framenumber); + BBQ_TRACE("FakeReleaseCallback"); + } } // Release all buffers that are beyond the ones that we need to hold |