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

Commit 8f71501b authored by Patrick Williams's avatar Patrick Williams
Browse files

Fix BufferReleaseChannel flagging.

Bug: 294133380
Test: presubmits
Flag: com.android.graphics.libgui.flags.buffer_release_channel
Change-Id: Iad39b9eb77b57e32521f7ba447a66510967c8209
parent 9aeb2cbf
Loading
Loading
Loading
Loading
+24 −7
Original line number Original line Diff line number Diff line
@@ -525,7 +525,9 @@ void BLASTBufferQueue::releaseBuffer(const ReleaseCallbackId& callbackId,
    }
    }
    mNumAcquired--;
    mNumAcquired--;
    updateDequeueShouldBlockLocked();
    updateDequeueShouldBlockLocked();
    if (mBufferReleaseReader) {
        mBufferReleaseReader->interruptBlockingRead();
        mBufferReleaseReader->interruptBlockingRead();
    }
    BBQ_TRACE("frame=%" PRIu64, callbackId.framenumber);
    BBQ_TRACE("frame=%" PRIu64, callbackId.framenumber);
    BQA_LOGV("released %s", callbackId.to_string().c_str());
    BQA_LOGV("released %s", callbackId.to_string().c_str());
    mBufferItemConsumer->releaseBuffer(it->second, releaseFence);
    mBufferItemConsumer->releaseBuffer(it->second, releaseFence);
@@ -857,7 +859,10 @@ void BLASTBufferQueue::onFrameCancelled(const uint64_t bufferId) {
        mNumDequeued--;
        mNumDequeued--;
        updateDequeueShouldBlockLocked();
        updateDequeueShouldBlockLocked();
    }
    }

    if (mBufferReleaseReader) {
        mBufferReleaseReader->interruptBlockingRead();
        mBufferReleaseReader->interruptBlockingRead();
    }
};
};


bool BLASTBufferQueue::syncNextTransaction(
bool BLASTBufferQueue::syncNextTransaction(
@@ -1191,7 +1196,10 @@ public:
            bbq->mSubmitted.clear();
            bbq->mSubmitted.clear();
            bbq->updateDequeueShouldBlockLocked();
            bbq->updateDequeueShouldBlockLocked();
        }
        }

        if (bbq->mBufferReleaseReader) {
            bbq->mBufferReleaseReader->interruptBlockingRead();
            bbq->mBufferReleaseReader->interruptBlockingRead();
        }


        return OK;
        return OK;
    }
    }
@@ -1215,7 +1223,10 @@ public:
            bbq->mMaxDequeuedBuffers = maxDequeuedBufferCount;
            bbq->mMaxDequeuedBuffers = maxDequeuedBufferCount;
            bbq->updateDequeueShouldBlockLocked();
            bbq->updateDequeueShouldBlockLocked();
        }
        }

        if (bbq->mBufferReleaseReader) {
            bbq->mBufferReleaseReader->interruptBlockingRead();
            bbq->mBufferReleaseReader->interruptBlockingRead();
        }


        size_t newFrameHistorySize = maxBufferCount + 2; // +2 because triple buffer rendering
        size_t newFrameHistorySize = maxBufferCount + 2; // +2 because triple buffer rendering
        // optimize away resizing the frame history unless it will grow
        // optimize away resizing the frame history unless it will grow
@@ -1251,7 +1262,9 @@ public:
            bbq->updateDequeueShouldBlockLocked();
            bbq->updateDequeueShouldBlockLocked();
        }
        }


        if (bbq->mBufferReleaseReader) {
            bbq->mBufferReleaseReader->interruptBlockingRead();
            bbq->mBufferReleaseReader->interruptBlockingRead();
        }
        return NO_ERROR;
        return NO_ERROR;
    }
    }


@@ -1272,7 +1285,9 @@ public:
            bbq->updateDequeueShouldBlockLocked();
            bbq->updateDequeueShouldBlockLocked();
        }
        }


        if (bbq->mBufferReleaseReader) {
            bbq->mBufferReleaseReader->interruptBlockingRead();
            bbq->mBufferReleaseReader->interruptBlockingRead();
        }
        return NO_ERROR;
        return NO_ERROR;
    }
    }


@@ -1292,7 +1307,9 @@ public:
            bbq->updateDequeueShouldBlockLocked();
            bbq->updateDequeueShouldBlockLocked();
        }
        }


        if (bbq->mBufferReleaseReader) {
            bbq->mBufferReleaseReader->interruptBlockingRead();
            bbq->mBufferReleaseReader->interruptBlockingRead();
        }
        return NO_ERROR;
        return NO_ERROR;
    }
    }