summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBartlomiej Moskal <bartlomiej.moskal@qt.io>2023-12-20 15:43:04 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-01-18 10:20:08 +0000
commit675efa36c87b5a88b27a7ba014bc5c4b7b6dac26 (patch)
tree60ccbd6b036bbe037f831eaf66b4f5ee75e25694 /src
parent53eafd93b0a028be45adb2c440a7b4da207ca7f2 (diff)
Android: Fix thread race in audio sink for bufferAvailable
tst_qaudiosink was flaky on Android. There reason was possible thread race when calling bufferAvailable method in QAndroidAudioSink implementation. While one call of bufferAvailable was invoke from QT source on QAndroidAudioSink thread, other call could come from OpenSL ES engine on different thread. That coused the thread race. To fix the problem, bufferAvailable will be called always from QAndroidAudioSink thread. Additionally turned of testdata with Sample Rate 44,1 MHz for tst_QAudioSink for 23 API (because of crash on emulator x86 API 23) Pick-to: 6.6 6.5 Fixes: QTBUG-118572 Change-Id: I8b23c871031d4b243e4c39771db83bd5a02260e3 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit c60c9c9abfb42d99b257a73198f6bb66ace76a2a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/multimedia/android/qandroidaudiosink.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/multimedia/android/qandroidaudiosink.cpp b/src/multimedia/android/qandroidaudiosink.cpp
index c4b361b8d..4da4c5fdc 100644
--- a/src/multimedia/android/qandroidaudiosink.cpp
+++ b/src/multimedia/android/qandroidaudiosink.cpp
@@ -314,7 +314,7 @@ void QAndroidAudioSink::bufferQueueCallback(SLBufferQueueItf bufferQueue, void *
{
Q_UNUSED(bufferQueue);
QAndroidAudioSink *audioOutput = reinterpret_cast<QAndroidAudioSink *>(ctx);
- audioOutput->bufferAvailable();
+ QMetaObject::invokeMethod(audioOutput, "bufferAvailable", Qt::QueuedConnection);
}
bool QAndroidAudioSink::preparePlayer()