updated default changes check to account for multiple devicetypes

This commit is contained in:
amerhifi 2019-10-18 16:50:36 -07:00
parent 421cff1cb2
commit ec7c8ce13c
2 changed files with 11 additions and 2 deletions

View file

@ -138,8 +138,8 @@ void AudioClient::checkDevices() {
auto inputDevices = getAvailableDevices(QAudio::AudioInput);
auto outputDevices = getAvailableDevices(QAudio::AudioOutput);
QMetaObject::invokeMethod(this, "changeDefault", Q_ARG(HifiAudioDeviceInfo, inputDevices.first()), Q_ARG(QAudio::Mode, QAudio::AudioInput));
QMetaObject::invokeMethod(this, "changeDefault", Q_ARG(HifiAudioDeviceInfo, outputDevices.first()), Q_ARG(QAudio::Mode, QAudio::AudioOutput));
checkDefaultChanges(inputDevices);
checkDefaultChanges(outputDevices);
Lock lock(_deviceMutex);
if (inputDevices != _inputDevices) {
@ -153,6 +153,14 @@ void AudioClient::checkDevices() {
}
}
void AudioClient::checkDefaultChanges(QList<HifiAudioDeviceInfo>& devices) {
foreach(auto device, devices) {
if (device.isDefault()) {
QMetaObject::invokeMethod(this, "changeDefault", Q_ARG(HifiAudioDeviceInfo, device), Q_ARG(QAudio::Mode, device.getMode()));
}
}
}
HifiAudioDeviceInfo AudioClient::getActiveAudioDevice(QAudio::Mode mode) const {
Lock lock(_deviceMutex);

View file

@ -238,6 +238,7 @@ public slots:
bool shouldLoopbackInjectors() override { return _shouldEchoToServer; }
Q_INVOKABLE void changeDefault(HifiAudioDeviceInfo newDefault, QAudio::Mode mode);
void checkDefaultChanges(QList<HifiAudioDeviceInfo>& devices);
// calling with a null QAudioDevice will use the system default
bool switchAudioDevice(QAudio::Mode mode, const HifiAudioDeviceInfo& deviceInfo = HifiAudioDeviceInfo());