From 5542fcd7d3eff69b51a0c9d4dfd46151f8c0645f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 15 Jan 2020 02:41:10 +0100 Subject: [PATCH] Unified how settings are read in audio context --- src/blackcore/context/contextaudio.cpp | 25 +++++++++++++------ .../audiodevicevolumesetupcomponent.h | 2 +- .../components/cockpitcomaudiodialog.ui | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/blackcore/context/contextaudio.cpp b/src/blackcore/context/contextaudio.cpp index 6457b5264..fbf1e827f 100644 --- a/src/blackcore/context/contextaudio.cpp +++ b/src/blackcore/context/contextaudio.cpp @@ -148,6 +148,7 @@ namespace BlackCore QTimer::singleShot(5000, this, [ = ] { if (!myself || !sApp || sApp->isShuttingDown()) { return; } + // myself->changeDeviceSettings(); myself->onChangedAudioSettings(); myself->onChangedLocalDevices(m_activeLocalDevices); }); @@ -369,8 +370,19 @@ namespace BlackCore void CContextAudioBase::setCurrentAudioDevices(const CAudioDeviceInfo &inputDevice, const CAudioDeviceInfo &outputDevice) { if (!m_voiceClient) { return; } - if (!inputDevice.getName().isEmpty()) { m_inputDeviceSetting.setAndSave(inputDevice.getName()); } - if (!outputDevice.getName().isEmpty()) { m_outputDeviceSetting.setAndSave(outputDevice.getName()); } + + if (!inputDevice.getName().isEmpty() && inputDevice.getName() != m_inputDeviceSetting.get()) + { + Q_ASSERT_X(inputDevice.isInputDevice(), Q_FUNC_INFO, "Need input device"); + const CStatusMessage m = m_inputDeviceSetting.setAndSave(inputDevice.getName()); + CLogMessage::preformatted(m); + } + if (!outputDevice.getName().isEmpty() && outputDevice.getName() != m_outputDeviceSetting.get()) + { + Q_ASSERT_X(outputDevice.isOutputDevice(), Q_FUNC_INFO, "Need output device"); + const CStatusMessage m = m_outputDeviceSetting.setAndSave(outputDevice.getName()); + CLogMessage::preformatted(m); + } m_voiceClient->startAudio(inputDevice, outputDevice); } @@ -523,12 +535,11 @@ namespace BlackCore void CContextAudioBase::changeDeviceSettings() { - const QString inputDeviceName = m_inputDeviceSetting.get(); - const CAudioDeviceInfo input = this->getAudioInputDevicesPlusDefault().findByNameOrDefault(inputDeviceName, CAudioDeviceInfo::getDefaultInputDevice()); - - const QString outputDeviceName = m_outputDeviceSetting.get(); - const CAudioDeviceInfo output = this->getAudioOutputDevicesPlusDefault().findByNameOrDefault(outputDeviceName, CAudioDeviceInfo::getDefaultOutputDevice()); + const CAudioDeviceInfoList devices = this->getCurrentAudioDevices(); + Q_ASSERT_X(devices.size() == 2, Q_FUNC_INFO, "Expect INPUT and OUTPUT device"); + const CAudioDeviceInfo input = devices.front(); + const CAudioDeviceInfo output = devices.back(); this->setCurrentAudioDevices(input, output); } diff --git a/src/blackgui/components/audiodevicevolumesetupcomponent.h b/src/blackgui/components/audiodevicevolumesetupcomponent.h index 20cd41b0a..5cb92cb51 100644 --- a/src/blackgui/components/audiodevicevolumesetupcomponent.h +++ b/src/blackgui/components/audiodevicevolumesetupcomponent.h @@ -127,7 +127,7 @@ namespace BlackGui bool m_init = false; BlackMisc::CConnectionGuard m_afvConnections; QScopedPointer ui; - BlackMisc::Audio::CAudioDeviceInfoList m_cbDevices; + BlackMisc::Audio::CAudioDeviceInfoList m_cbDevices; //!< devices to be displayed in the checkbox BlackMisc::CDigestSignal m_volumeSliderChanged { this, &CAudioDeviceVolumeSetupComponent::saveVolumes, 1000, 10 }; BlackMisc::CSetting m_audioSettings { this, &CAudioDeviceVolumeSetupComponent::reloadSettings }; }; diff --git a/src/blackgui/components/cockpitcomaudiodialog.ui b/src/blackgui/components/cockpitcomaudiodialog.ui index d29fd6e7c..53b60c948 100644 --- a/src/blackgui/components/cockpitcomaudiodialog.ui +++ b/src/blackgui/components/cockpitcomaudiodialog.ui @@ -7,7 +7,7 @@ 0 0 400 - 500 + 575