Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 336e2712 authored by Valerie Hau's avatar Valerie Hau Committed by Android (Google) Code Review
Browse files

Merge "Only process passback transactions during onFrameAvailable"

parents d034b23f 0188adf4
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -174,7 +174,9 @@ void BLASTBufferQueue::transactionCallback(nsecs_t /*latchTime*/, const sp<Fence
    }
    mPendingReleaseItem.item = std::move(mSubmitted.front());
    mSubmitted.pop();
    if (mNextTransaction == nullptr) {
        processNextBufferLocked();
    }
    mCallbackCV.notify_all();
    decStrong((void*)transactionCallbackThunk);
}
@@ -252,8 +254,13 @@ Rect BLASTBufferQueue::computeCrop(const BufferItem& item) {

void BLASTBufferQueue::onFrameAvailable(const BufferItem& /*item*/) {
    ATRACE_CALL();
    std::lock_guard _lock{mMutex};
    std::unique_lock _lock{mMutex};

    if (mNextTransaction != nullptr) {
        while (mNumFrameAvailable > 0 || mNumAcquired == MAX_ACQUIRED_BUFFERS) {
            mCallbackCV.wait(_lock);
        }
    }
    // add to shadow queue
    mNumFrameAvailable++;
    processNextBufferLocked();