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

Commit dd913d00 authored by Sungtak Lee's avatar Sungtak Lee Committed by android-build-merger
Browse files

Merge "BufferQueueProducer: fix buffer adjustment during setDequeueTimeout" into qt-dev

am: b35167c9

Change-Id: I5b819594feb66df4725036385b28b7dff646e00f
parents 1595a078 b35167c9
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1497,7 +1497,9 @@ status_t BufferQueueProducer::setDequeueTimeout(nsecs_t timeout) {
    BQ_LOGV("setDequeueTimeout: %" PRId64, timeout);

    std::lock_guard<std::mutex> lock(mCore->mMutex);
    int delta = mCore->getMaxBufferCountLocked(mCore->mAsyncMode, false,
    bool dequeueBufferCannotBlock =
            timeout >= 0 ? false : mCore->mDequeueBufferCannotBlock;
    int delta = mCore->getMaxBufferCountLocked(mCore->mAsyncMode, dequeueBufferCannotBlock,
            mCore->mMaxBufferCount) - mCore->getMaxBufferCountLocked();
    if (!mCore->adjustAvailableSlotsLocked(delta)) {
        BQ_LOGE("setDequeueTimeout: BufferQueue failed to adjust the number of "
@@ -1506,12 +1508,10 @@ status_t BufferQueueProducer::setDequeueTimeout(nsecs_t timeout) {
    }

    mDequeueTimeout = timeout;
    if (timeout >= 0) {
        mCore->mDequeueBufferCannotBlock = false;
        if (timeout != 0) {
    mCore->mDequeueBufferCannotBlock = dequeueBufferCannotBlock;
    if (timeout > 0) {
        mCore->mQueueBufferCanDrop = false;
    }
    }

    VALIDATE_CONSISTENCY();
    return NO_ERROR;