diff options
author | Pekka Gehör <pekka.gehor@qt.io> | 2022-06-02 16:05:51 +0300 |
---|---|---|
committer | Pekka Gehör <pekka.gehor@qt.io> | 2022-06-13 10:06:50 +0000 |
commit | 4dcefba18c06839c394f43a017e2e18be557fa4a (patch) | |
tree | ceb87b351d08b5f20b481d9a6740226fa38e9cfb | |
parent | 9dc7403f73508e340a89a0752db1dfe1047a442d (diff) | |
download | qtmultimedia-4dcefba18c06839c394f43a017e2e18be557fa4a.tar.gz |
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.cpp | 3 |
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) |