@@ -415,14 +415,12 @@ void BLASTBufferQueue::transactionCallback(nsecs_t /*latchTime*/, const sp<Fence
415415 stat.frameEventStats .dequeueReadyTime );
416416 }
417417 auto currFrameNumber = stat.frameEventStats .frameNumber ;
418- std::vector<ReleaseCallbackId> staleReleases;
419- for (const auto & [key, value] : mSubmitted ) {
420- if (currFrameNumber > key.framenumber ) {
421- staleReleases. push_back (key);
418+ // Release stale buffers.
419+ for (const auto & [key, _] : mSubmitted ) {
420+ if (currFrameNumber <= key.framenumber ) {
421+ continue ; // not stale.
422422 }
423- }
424- for (const auto & staleRelease : staleReleases) {
425- releaseBufferCallbackLocked (staleRelease,
423+ releaseBufferCallbackLocked (key,
426424 stat.previousReleaseFence
427425 ? stat.previousReleaseFence
428426 : Fence::NO_FENCE,
@@ -618,7 +616,7 @@ status_t BLASTBufferQueue::acquireNextBufferLocked(
618616 mNumAcquired ++;
619617 mLastAcquiredFrameNumber = bufferItem.mFrameNumber ;
620618 ReleaseCallbackId releaseCallbackId (buffer->getId (), mLastAcquiredFrameNumber );
621- mSubmitted [ releaseCallbackId] = bufferItem;
619+ mSubmitted . emplace_or_replace ( releaseCallbackId, bufferItem) ;
622620
623621 bool needsDisconnect = false ;
624622 mBufferItemConsumer ->getConnectionEvents (bufferItem.mFrameNumber , &needsDisconnect);
@@ -851,7 +849,7 @@ void BLASTBufferQueue::onFrameReplaced(const BufferItem& item) {
851849
852850void BLASTBufferQueue::onFrameDequeued (const uint64_t bufferId) {
853851 std::lock_guard _lock{mTimestampMutex };
854- mDequeueTimestamps [ bufferId] = systemTime ();
852+ mDequeueTimestamps . emplace_or_replace ( bufferId, systemTime () );
855853};
856854
857855void BLASTBufferQueue::onFrameCancelled (const uint64_t bufferId) {
0 commit comments