diff --git a/src/blackgui/components/audiodevicevolumesetupcomponent.cpp b/src/blackgui/components/audiodevicevolumesetupcomponent.cpp index 000b4a750..c72ee10f4 100644 --- a/src/blackgui/components/audiodevicevolumesetupcomponent.cpp +++ b/src/blackgui/components/audiodevicevolumesetupcomponent.cpp @@ -222,7 +222,8 @@ namespace BlackGui void CAudioDeviceVolumeSetupComponent::initAudioDeviceLists() { if (!this->hasAudio()) { return; } - this->onAudioDevicesChanged(sGui->getCContextAudioBase()->getAudioDevices()); + const bool changed = this->onAudioDevicesChanged(sGui->getCContextAudioBase()->getAudioDevices()); + if (!changed) { return; } const CAudioDeviceInfoList currentDevices = sGui->getCContextAudioBase()->getCurrentAudioDevices(); this->onAudioStarted(currentDevices.getInputDevices().frontOrDefault(), currentDevices.getOutputDevices().frontOrDefault()); } @@ -264,7 +265,7 @@ namespace BlackGui if (!hasAudio()) { return; } this->initAudioDeviceLists(); const CAudioDeviceInfo i = this->getSelectedInputDevice(); - const CAudioDeviceInfo o = this->getSelectedInputDevice(); + const CAudioDeviceInfo o = this->getSelectedOutputDevice(); sGui->getCContextAudioBase()->setCurrentAudioDevices(i, o); } @@ -318,8 +319,11 @@ namespace BlackGui ui->cb_SetupAudioOutputDevice->setCurrentText(output.toQString(true)); } - void CAudioDeviceVolumeSetupComponent::onAudioDevicesChanged(const CAudioDeviceInfoList &devices) + bool CAudioDeviceVolumeSetupComponent::onAudioDevicesChanged(const CAudioDeviceInfoList &devices) { + if (m_cbDevices.hasSameDevices(devices)) { return false; } // avoid numerous follow up actions + m_cbDevices = devices; + ui->cb_SetupAudioOutputDevice->clear(); ui->cb_SetupAudioInputDevice->clear(); @@ -340,6 +344,7 @@ namespace BlackGui if (!i.isEmpty()) { ui->cb_SetupAudioInputDevice->setCurrentText(i); } if (!o.isEmpty()) { ui->cb_SetupAudioOutputDevice->setCurrentText(o); } + return true; } void CAudioDeviceVolumeSetupComponent::onLoopbackToggled(bool loopback) diff --git a/src/blackgui/components/audiodevicevolumesetupcomponent.h b/src/blackgui/components/audiodevicevolumesetupcomponent.h index 68a2b17ca..0cfb20c7e 100644 --- a/src/blackgui/components/audiodevicevolumesetupcomponent.h +++ b/src/blackgui/components/audiodevicevolumesetupcomponent.h @@ -74,7 +74,7 @@ namespace BlackGui void onAudioStarted(const BlackMisc::Audio::CAudioDeviceInfo &input, const BlackMisc::Audio::CAudioDeviceInfo &output); //! Audio devices changed - void onAudioDevicesChanged(const BlackMisc::Audio::CAudioDeviceInfoList &devices); + bool onAudioDevicesChanged(const BlackMisc::Audio::CAudioDeviceInfoList &devices); //! Loopback toggled void onLoopbackToggled(bool loopback); @@ -113,6 +113,7 @@ namespace BlackGui //! @} QScopedPointer ui; + BlackMisc::Audio::CAudioDeviceInfoList m_cbDevices; BlackMisc::CDigestSignal m_volumeSliderChanged { this, &CAudioDeviceVolumeSetupComponent::saveVolumes, 1000, 10 }; BlackMisc::CSetting m_audioSettings { this, &CAudioDeviceVolumeSetupComponent::reloadSettings }; };