[AFV] Ref T739, avoid roundtrips if devices did not change but are refreshed

This commit is contained in:
Klaus Basan
2019-10-18 04:08:09 +02:00
parent 0bdc124c8f
commit 11f74a05e6
2 changed files with 10 additions and 4 deletions

View File

@@ -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)

View File

@@ -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::CAudioDeviceVolumeSetupComponent> ui;
BlackMisc::Audio::CAudioDeviceInfoList m_cbDevices;
BlackMisc::CDigestSignal m_volumeSliderChanged { this, &CAudioDeviceVolumeSetupComponent::saveVolumes, 1000, 10 };
BlackMisc::CSetting<BlackMisc::Audio::TSettings> m_audioSettings { this, &CAudioDeviceVolumeSetupComponent::reloadSettings };
};