Init context devices deferred as the settings are ONLY available after DBus is initialized

* we init in a context constructor
* a this time it is not clear:
** if we will use a DBus scenario
** or standalone scenario
This commit is contained in:
Klaus Basan
2020-01-22 18:41:11 +01:00
parent 4378b6c959
commit 4d5e3ee0ae
2 changed files with 18 additions and 5 deletions

View File

@@ -139,16 +139,19 @@ namespace BlackCore
this->initVoiceClient();
}
const CSettings as = m_audioSettings.getThreadLocal();
this->setVoiceOutputVolume(as.getOutVolume());
m_selcalPlayer = new CSelcalPlayer(CAudioDeviceInfo::getDefaultOutputDevice(), this);
// here we are in a base class of one context
// the whole context/facade system is not initialized when this code here is executed
this->changeDeviceSettings();
QPointer<CContextAudioBase> myself(this);
QTimer::singleShot(5000, this, [ = ]
{
if (!myself || !sApp || sApp->isShuttingDown()) { return; }
// myself->changeDeviceSettings();
const CSettings as = m_audioSettings.getThreadLocal();
this->setVoiceOutputVolume(as.getOutVolume());
m_selcalPlayer = new CSelcalPlayer(CAudioDeviceInfo::getDefaultOutputDevice(), this);
myself->changeDeviceSettings();
myself->onChangedAudioSettings();
myself->onChangedLocalDevices(m_activeLocalDevices);
});
@@ -370,6 +373,7 @@ namespace BlackCore
void CContextAudioBase::setCurrentAudioDevices(const CAudioDeviceInfo &inputDevice, const CAudioDeviceInfo &outputDevice)
{
if (!m_voiceClient) { return; }
if (!sApp) { return; }
if (!inputDevice.getName().isEmpty() && inputDevice.getName() != m_inputDeviceSetting.get())
{
@@ -609,6 +613,12 @@ namespace BlackCore
break;
}
}
bool CContextAudioBase::isRunningWithLocalCore()
{
return sApp && sApp->isLocalContext();
}
} // ns
} // ns

View File

@@ -339,6 +339,9 @@ namespace BlackCore
int m_outVolumeBeforeMute = 90;
static constexpr int MinUnmuteVolume = 20; //!< minimum volume when unmuted
//! Do we use a local core
static bool isRunningWithLocalCore();
// settings
BlackMisc::CSetting<BlackMisc::Audio::TSettings> m_audioSettings { this, &CContextAudioBase::onChangedAudioSettings };
BlackMisc::CSetting<BlackMisc::Audio::TVoiceSetup> m_voiceSettings { this, &CContextAudioBase::onChangedVoiceSettings };