void BLASTBufferQueue::transactionCallback(nsecs_t /*latchTime*/, const sp<Fence>& /*presentFence*/,
const std::vector<SurfaceControlStats>& stats) {
...
std::vector<ReleaseCallbackId> staleReleases;
for (const auto& [key, value]: mSubmitted) {
if (currFrameNumber > key.framenumber) {
staleReleases.push_back(key);
}
}
for (const auto& staleRelease : staleReleases) {
releaseBufferCallbackLocked(staleRelease, stat.previousReleaseFence ? stat.previousReleaseFence : Fence::NO_FENCE,
stat.transformHint, stat.currentMaxAcquiredBufferCount);
}
...
decStrong((void*)transactionCallbackThunk);
...
}