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

Commit a6a1995f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "BLASTBufferQueue: Don't use mNextTransaction on Binder thread." into rvc-dev

parents 0a3da7b7 255acdca
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -189,13 +189,13 @@ void BLASTBufferQueue::transactionCallback(nsecs_t /*latchTime*/, const sp<Fence
    mPendingReleaseItem.item = std::move(mSubmitted.front());
    mSubmitted.pop();

    processNextBufferLocked();
    processNextBufferLocked(false);

    mCallbackCV.notify_all();
    decStrong((void*)transactionCallbackThunk);
}

void BLASTBufferQueue::processNextBufferLocked() {
void BLASTBufferQueue::processNextBufferLocked(bool useNextTransaction) {
    ATRACE_CALL();
    if (mNumFrameAvailable == 0 || mNumAcquired == MAX_ACQUIRED_BUFFERS + 1) {
        return;
@@ -209,7 +209,7 @@ void BLASTBufferQueue::processNextBufferLocked() {
    SurfaceComposerClient::Transaction localTransaction;
    bool applyTransaction = true;
    SurfaceComposerClient::Transaction* t = &localTransaction;
    if (mNextTransaction != nullptr && mUseNextTransaction) {
    if (mNextTransaction != nullptr && useNextTransaction) {
        t = mNextTransaction;
        mNextTransaction = nullptr;
        applyTransaction = false;
@@ -274,16 +274,14 @@ void BLASTBufferQueue::onFrameAvailable(const BufferItem& /*item*/) {
        while (mNumFrameAvailable > 0 || mNumAcquired == MAX_ACQUIRED_BUFFERS + 1) {
            mCallbackCV.wait(_lock);
        }
        mUseNextTransaction = true;
    }
    // add to shadow queue
    mNumFrameAvailable++;
    processNextBufferLocked();
    processNextBufferLocked(true);
}

void BLASTBufferQueue::setNextTransaction(SurfaceComposerClient::Transaction* t) {
    std::lock_guard _lock{mMutex};
    mUseNextTransaction = false;
    mNextTransaction = t;
}

+1 −3
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ private:
    BLASTBufferQueue& operator = (const BLASTBufferQueue& rhs);
    BLASTBufferQueue(const BLASTBufferQueue& rhs);

    void processNextBufferLocked() REQUIRES(mMutex);
    void processNextBufferLocked(bool useNextTransaction) REQUIRES(mMutex);
    Rect computeCrop(const BufferItem& item);

    sp<SurfaceControl> mSurfaceControl;
@@ -123,8 +123,6 @@ private:
    sp<BLASTBufferItemConsumer> mBufferItemConsumer;

    SurfaceComposerClient::Transaction* mNextTransaction GUARDED_BY(mMutex);

    bool mUseNextTransaction = false;
};

} // namespace android