summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPekka Gehör <pekka.gehor@qt.io>2022-06-02 16:05:51 +0300
committerPekka Gehör <pekka.gehor@qt.io>2022-06-13 10:06:50 +0000
commit4dcefba18c06839c394f43a017e2e18be557fa4a (patch)
treeceb87b351d08b5f20b481d9a6740226fa38e9cfb
parent9dc7403f73508e340a89a0752db1dfe1047a442d (diff)
Android: Fix for UnderrunError on QAndroidAudioSink
After fix we set a state of QAndroidAudioSink to the QAudio::IdleState, immediately when m_audioSource->atEnd() is true and buffer size is > 0. Because otherwise it is called when buffer size is 0 and m_audioSource->atEnd() is true. and it leads to that we also call a setError(QAudio::UnderrunError) in QAndroidAudioSink::onEOSEvent() function. The patch will not affect the tests. Task-number: QTBUG-97492 Change-Id: Id48469141ab4aab266b775aea674bc6e82a53d33 Reviewed-by: Samuel Mira <samuel.mira@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 58d09e0b57c8f0e7d7947d703390954f45277fbf)
-rw-r--r--src/multimedia/platform/android/audio/qandroidaudiosink.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/multimedia/platform/android/audio/qandroidaudiosink.cpp b/src/multimedia/platform/android/audio/qandroidaudiosink.cpp
index bd7005a5b..f5923a403 100644
--- a/src/multimedia/platform/android/audio/qandroidaudiosink.cpp
+++ b/src/multimedia/platform/android/audio/qandroidaudiosink.cpp
@@ -328,6 +328,9 @@ void QAndroidAudioSink::bufferAvailable(quint32 count, quint32 playIndex)
m_nextBuffer = (m_nextBuffer + 1) % BUFFER_COUNT;
QMetaObject::invokeMethod(this, "onBytesProcessed", Qt::QueuedConnection, Q_ARG(qint64, readSize));
+
+ if (m_audioSource->atEnd())
+ setState(QAudio::IdleState);
}
void QAndroidAudioSink::playCallback(SLPlayItf player, void *ctx, SLuint32 event)