diff --git a/src/platform/qt/AudioDevice.cpp b/src/platform/qt/AudioDevice.cpp index 980d1f380..8d0ff8c44 100644 --- a/src/platform/qt/AudioDevice.cpp +++ b/src/platform/qt/AudioDevice.cpp @@ -34,6 +34,7 @@ void AudioDevice::setFormat(const QAudioFormat& format) { GBASyncLockAudio(&m_context->sync); blip_set_rates(m_context->gba->audio.left, GBA_ARM7TDMI_FREQUENCY, format.sampleRate() * fauxClock); blip_set_rates(m_context->gba->audio.right, GBA_ARM7TDMI_FREQUENCY, format.sampleRate() * fauxClock); + GBASyncUnlockAudio(&m_context->sync); #endif } @@ -53,6 +54,7 @@ qint64 AudioDevice::readData(char* data, qint64 maxSize) { #if RESAMPLE_LIBRARY == RESAMPLE_NN return GBAAudioResampleNN(&m_context->gba->audio, m_ratio, &m_drift, reinterpret_cast(data), maxSize / sizeof(GBAStereoSample)) * sizeof(GBAStereoSample); #elif RESAMPLE_LIBRARY == RESAMPLE_BLIP_BUF + GBASyncLockAudio(&m_context->sync); int available = blip_samples_avail(m_context->gba->audio.left); if (available > maxSize / sizeof(GBAStereoSample)) { available = maxSize / sizeof(GBAStereoSample); diff --git a/src/platform/qt/GameController.cpp b/src/platform/qt/GameController.cpp index c691262d3..fcbd47fe0 100644 --- a/src/platform/qt/GameController.cpp +++ b/src/platform/qt/GameController.cpp @@ -461,7 +461,7 @@ void GameController::clearAVStream() { } void GameController::reloadAudioDriver() { - m_audioProcessor->pause(); + QMetaObject::invokeMethod(m_audioProcessor, "pause", Qt::BlockingQueuedConnection); delete m_audioProcessor; m_audioProcessor = AudioProcessor::create(); m_audioProcessor->moveToThread(m_audioThread);