summaryrefslogtreecommitdiffstats
path: root/src/plugins/wasapi/qwasapiutils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/wasapi/qwasapiutils.cpp')
-rw-r--r--src/plugins/wasapi/qwasapiutils.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/plugins/wasapi/qwasapiutils.cpp b/src/plugins/wasapi/qwasapiutils.cpp
index 6340a3b01..727c94c23 100644
--- a/src/plugins/wasapi/qwasapiutils.cpp
+++ b/src/plugins/wasapi/qwasapiutils.cpp
@@ -182,6 +182,13 @@ QByteArray QWasapiUtils::defaultDevice(QAudio::Mode mode)
{
qCDebug(lcMmUtils) << __FUNCTION__ << mode;
+ QList<QByteArray> &deviceNames = mode == QAudio::AudioInput ? gMapping->inputDeviceNames : gMapping->outputDeviceNames;
+ QList<QString> &deviceIds = mode == QAudio::AudioInput ? gMapping->inputDeviceIds : gMapping->outputDeviceIds;
+ if (deviceNames.isEmpty() || deviceIds.isEmpty()) // Initialize
+ availableDevices(mode);
+ if (deviceNames.isEmpty() || deviceIds.isEmpty()) // No audio devices at all
+ return QByteArray();
+
ComPtr<IMediaDeviceStatics> mediaDeviceStatics;
HRESULT hr;
@@ -198,7 +205,9 @@ QByteArray QWasapiUtils::defaultDevice(QAudio::Mode mode)
const wchar_t *dadWStr = defaultAudioDevice.GetRawBuffer(&dADSize);
const QString defaultAudioDeviceId = QString::fromWCharArray(dadWStr, dADSize);
- return defaultAudioDeviceId.toLocal8Bit();
+ Q_ASSERT(deviceIds.indexOf(defaultAudioDeviceId) != -1);
+
+ return deviceNames.at(deviceIds.indexOf(defaultAudioDeviceId));
}
QList<QByteArray> QWasapiUtils::availableDevices(QAudio::Mode mode)