summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Dubsky <pavel.dubsky@qt.io>2023-10-03 11:49:05 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-10-05 03:01:31 +0000
commitf63286ea8b22008c207713070dc42abdc76c0d56 (patch)
tree72272a996ea859873a58caa6da41c19f18c5518b
parent49c18876913325de5e2272b6d6fc2b129ebc6859 (diff)
Add audio warm-up opt out option
Current workaround to fix audio cutting out in the beginning of the audio on Windows introduced some weird side effects which are hard to reproduce, such as: blocking sleep mode, stucking CPU core at the minimum frequency. So far, there's no any other solution to the cutting sound issue, so an environment variable that provides the ability to opt out is introduced. Task-number: QTBUG-117528 Task-number: QTBUG-117612 Change-Id: I8b6ecab5cb3ae9136fd29adf5186d15c9128707f Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io> (cherry picked from commit 194b1b22dcd49df3949a6c8ed5d54585970798cf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit ac55a1c164de20c11143aae6feb49a78cb1d3d15)
-rw-r--r--src/multimedia/windows/qwindowsmediadevices.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/multimedia/windows/qwindowsmediadevices.cpp b/src/multimedia/windows/qwindowsmediadevices.cpp
index 3027cde1e..fbdc46fbe 100644
--- a/src/multimedia/windows/qwindowsmediadevices.cpp
+++ b/src/multimedia/windows/qwindowsmediadevices.cpp
@@ -291,8 +291,20 @@ QPlatformAudioSink *QWindowsMediaDevices::createAudioSink(const QAudioDevice &de
return new QWindowsAudioSink(devInfo->immDev(), parent);
}
+static bool isPrepareAudioEnabled()
+{
+ static bool isDisableAudioPrepareSet = false;
+ static const int disableAudioPrepare =
+ qEnvironmentVariableIntValue("QT_DISABLE_AUDIO_PREPARE", &isDisableAudioPrepareSet);
+
+ return !isDisableAudioPrepareSet || disableAudioPrepare == 0;
+}
+
void QWindowsMediaDevices::prepareAudio()
{
+ if (!isPrepareAudioEnabled())
+ return;
+
if (m_isAudioClientWarmedUp.exchange(true))
return;