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

Commit 3131f32b authored by Shunkai Yao's avatar Shunkai Yao Committed by Automerger Merge Worker
Browse files

Merge "Fix Visualizer capture size reset in wraparound" into udc-qpr-dev am: 6c0cffd8

parents 1a8c07e0 6c0cffd8
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -223,8 +223,7 @@ std::vector<uint8_t> VisualizerContext::capture() {
        deltaSamples = kMaxCaptureBufSize;
    }

    int32_t capturePoint;
    //capturePoint = (int32_t)mCaptureIdx - deltaSamples;
    int32_t capturePoint, captureSamples = mCaptureSamples;
    __builtin_sub_overflow((int32_t) mCaptureIdx, deltaSamples, &capturePoint);
    // a negative capturePoint means we wrap the buffer.
    if (capturePoint < 0) {
@@ -232,13 +231,14 @@ std::vector<uint8_t> VisualizerContext::capture() {
        if (size > mCaptureSamples) {
            size = mCaptureSamples;
        }
        // first part of two stages copy, capture to the end of buffer and reset the size/point
        result.insert(result.end(), &mCaptureBuf[kMaxCaptureBufSize + capturePoint],
                        &mCaptureBuf[kMaxCaptureBufSize + capturePoint + size]);
        mCaptureSamples -= size;
        captureSamples -= size;
        capturePoint = 0;
    }
    result.insert(result.end(), &mCaptureBuf[capturePoint],
                    &mCaptureBuf[capturePoint + mCaptureSamples]);
                  &mCaptureBuf[capturePoint + captureSamples]);
    mLastCaptureIdx = mCaptureIdx;
    return result;
}