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

Commit 5f5827a1 authored by Mikhail Naganov's avatar Mikhail Naganov
Browse files

audio: Fix HAL reply handling in CompressedOffloadOutputStreamTest

Increase data position based on the HAL consumption of data,
on the production by the test.

Bug: 254806348
Test: atest VtsHalAudioV7_1TargetTest:CompressedOffloadOutputStream/CompressedOffloadOutputStreamTest
Change-Id: I33a86ec62662ba4738c70c15b77ece0135da7d29
(cherry picked from commit bae409f6)
parent 590248f6
Loading
Loading
Loading
Loading
+7 −3
Original line number Original line Diff line number Diff line
@@ -1014,9 +1014,8 @@ class StreamWriter : public StreamWorker<StreamWriter> {
        if (mDataPosition == 0) mOnDataStart();
        if (mDataPosition == 0) mOnDataStart();
        const size_t dataSize = std::min(mData.size() - mDataPosition, mDataMQ->availableToWrite());
        const size_t dataSize = std::min(mData.size() - mDataPosition, mDataMQ->availableToWrite());
        bool success = mDataMQ->write(mData.data() + mDataPosition, dataSize);
        bool success = mDataMQ->write(mData.data() + mDataPosition, dataSize);
        bool wrapped = false;
        ALOGE_IF(!success, "data message queue write failed");
        ALOGE_IF(!success, "data message queue write failed");
        mDataPosition += dataSize;
        if (mDataPosition >= mData.size()) mDataPosition = 0;
        mEfGroup->wake(static_cast<uint32_t>(MessageQueueFlagBits::NOT_EMPTY));
        mEfGroup->wake(static_cast<uint32_t>(MessageQueueFlagBits::NOT_EMPTY));


        uint32_t efState = 0;
        uint32_t efState = 0;
@@ -1034,6 +1033,11 @@ class StreamWriter : public StreamWorker<StreamWriter> {
                ALOGE("bad write status: %d", writeStatus.retval);
                ALOGE("bad write status: %d", writeStatus.retval);
                success = false;
                success = false;
            }
            }
            mDataPosition += writeStatus.reply.written;
            if (mDataPosition >= mData.size()) {
                mDataPosition = 0;
                wrapped = true;
            }
        }
        }
        if (ret == -EAGAIN || ret == -EINTR) {
        if (ret == -EAGAIN || ret == -EINTR) {
            // Spurious wakeup. This normally retries no more than once.
            // Spurious wakeup. This normally retries no more than once.
@@ -1042,7 +1046,7 @@ class StreamWriter : public StreamWorker<StreamWriter> {
            ALOGE("bad wait status: %d", ret);
            ALOGE("bad wait status: %d", ret);
            success = false;
            success = false;
        }
        }
        if (success && mDataPosition == 0) {
        if (wrapped) {
            success = mOnDataWrap();
            success = mOnDataWrap();
        }
        }
        return success;
        return success;