diff options
| author | 2024-09-05 17:02:51 -0700 | |
|---|---|---|
| committer | 2024-09-05 17:02:51 -0700 | |
| commit | 60d226fc1fff9274bbb33d9c7c8a3f1b3724e832 (patch) | |
| tree | 4226e3be80e148cc9f00816bb3bd35d87929dfad /libs/gui/BLASTBufferQueue.cpp | |
| parent | 69ec43c8a4007d96acf6d44a5484432b69ca884c (diff) | |
| parent | 98858ea367d1acc939b970cbce5528aa98213a9d (diff) | |
Merge 24Q3 to AOSP main
Bug: 357762254
Merged-In: Ibe9b06e590ed420f29c790188dee11674fca5a2e
Change-Id: Ib27f6f1e35c80ef5ac6adec6353609004ed6ed5d
Diffstat (limited to 'libs/gui/BLASTBufferQueue.cpp')
| -rw-r--r-- | libs/gui/BLASTBufferQueue.cpp | 24 | 
1 files changed, 12 insertions, 12 deletions
| diff --git a/libs/gui/BLASTBufferQueue.cpp b/libs/gui/BLASTBufferQueue.cpp index f317a2eea0..739c3c2a41 100644 --- a/libs/gui/BLASTBufferQueue.cpp +++ b/libs/gui/BLASTBufferQueue.cpp @@ -613,8 +613,19 @@ status_t BLASTBufferQueue::acquireNextBufferLocked(              std::bind(releaseBufferCallbackThunk, wp<BLASTBufferQueue>(this) /* callbackContext */,                        std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);      sp<Fence> fence = bufferItem.mFence ? new Fence(bufferItem.mFence->dup()) : Fence::NO_FENCE; + +    nsecs_t dequeueTime = -1; +    { +        std::lock_guard _lock{mTimestampMutex}; +        auto dequeueTimeIt = mDequeueTimestamps.find(buffer->getId()); +        if (dequeueTimeIt != mDequeueTimestamps.end()) { +            dequeueTime = dequeueTimeIt->second; +            mDequeueTimestamps.erase(dequeueTimeIt); +        } +    } +      t->setBuffer(mSurfaceControl, buffer, fence, bufferItem.mFrameNumber, mProducerId, -                 releaseBufferCallback); +                 releaseBufferCallback, dequeueTime);      t->setDataspace(mSurfaceControl, static_cast<ui::Dataspace>(bufferItem.mDataSpace));      t->setHdrMetadata(mSurfaceControl, bufferItem.mHdrMetadata);      t->setSurfaceDamageRegion(mSurfaceControl, bufferItem.mSurfaceDamage); @@ -658,17 +669,6 @@ status_t BLASTBufferQueue::acquireNextBufferLocked(          mPendingFrameTimelines.pop();      } -    { -        std::lock_guard _lock{mTimestampMutex}; -        auto dequeueTime = mDequeueTimestamps.find(buffer->getId()); -        if (dequeueTime != mDequeueTimestamps.end()) { -            Parcel p; -            p.writeInt64(dequeueTime->second); -            t->setMetadata(mSurfaceControl, gui::METADATA_DEQUEUE_TIME, p); -            mDequeueTimestamps.erase(dequeueTime); -        } -    } -      mergePendingTransactions(t, bufferItem.mFrameNumber);      if (applyTransaction) {          // All transactions on our apply token are one-way. See comment on mAppliedLastTransaction |