From bae409f6c69fe8874e7c7195805b0483aa21f7d6 Mon Sep 17 00:00:00 2001 From: Mikhail Naganov Date: Tue, 1 Nov 2022 00:14:15 +0000 Subject: [PATCH] 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 --- .../vts/functional/AudioPrimaryHidlHalTest.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h b/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h index e46e5b4f52..0ca6a58f06 100644 --- a/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h +++ b/audio/core/all-versions/vts/functional/AudioPrimaryHidlHalTest.h @@ -1014,9 +1014,8 @@ class StreamWriter : public StreamWorker { if (mDataPosition == 0) mOnDataStart(); const size_t dataSize = std::min(mData.size() - mDataPosition, mDataMQ->availableToWrite()); bool success = mDataMQ->write(mData.data() + mDataPosition, dataSize); + bool wrapped = false; ALOGE_IF(!success, "data message queue write failed"); - mDataPosition += dataSize; - if (mDataPosition >= mData.size()) mDataPosition = 0; mEfGroup->wake(static_cast(MessageQueueFlagBits::NOT_EMPTY)); uint32_t efState = 0; @@ -1034,6 +1033,11 @@ class StreamWriter : public StreamWorker { ALOGE("bad write status: %d", writeStatus.retval); success = false; } + mDataPosition += writeStatus.reply.written; + if (mDataPosition >= mData.size()) { + mDataPosition = 0; + wrapped = true; + } } if (ret == -EAGAIN || ret == -EINTR) { // Spurious wakeup. This normally retries no more than once. @@ -1042,7 +1046,7 @@ class StreamWriter : public StreamWorker { ALOGE("bad wait status: %d", ret); success = false; } - if (success && mDataPosition == 0) { + if (wrapped) { success = mOnDataWrap(); } return success;