From cd53dd3eecb0d17b3f571ddcd155bbb74772f469 Mon Sep 17 00:00:00 2001 From: pingkai Date: Fri, 31 Jul 2020 13:52:37 +0800 Subject: [PATCH] perf(filteraudiorender): fix busy loop Signed-off-by: pingkai --- framework/render/audio/filterAudioRender.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/framework/render/audio/filterAudioRender.cpp b/framework/render/audio/filterAudioRender.cpp index 1ba1a3cdf..f636c792b 100644 --- a/framework/render/audio/filterAudioRender.cpp +++ b/framework/render/audio/filterAudioRender.cpp @@ -219,6 +219,7 @@ namespace Cicada { if (mRenderFrame == nullptr) { mRenderFrame = getFrame(); } + int ret = 0; while (mRenderFrame != nullptr) { if (mState != State::state_running) { @@ -236,7 +237,7 @@ namespace Cicada { loopChecker(); int nb_samples = mRenderFrame->getInfo().audio.nb_samples; - int ret = device_write(mRenderFrame); + ret = device_write(mRenderFrame); if (ret == -EAGAIN) { @@ -250,7 +251,7 @@ namespace Cicada { } mRenderFrame = getFrame(); } - if (mFrameQue.empty()) { + if (mFrameQue.empty() || ret == -EAGAIN) { // TODO: only on Android xiaomi miui 9? mMaxQueSize = std::min(mMaxQueSize.load() + 1, MAX_INPUT_BUFFER_COUNT);