[WASAPI] another WASAPI fix trial

* disabled the initWindowsAudioDevices call as it seems to be pointless
* changed the order in CContextAudioBase::initVoiceClient
* init CAudioDeviceInfoList::allDevices BEFORE CAfvClient

see https://discordapp.com/channels/539048679160676382/539925070550794240/687769623827185671
This commit is contained in:
Klaus Basan
2020-03-12 22:42:51 +01:00
committed by Mat Sutcliffe
parent 38a7542265
commit 7f4a68eb45
3 changed files with 12 additions and 12 deletions

View File

@@ -165,10 +165,13 @@ namespace BlackCore
void CContextAudioBase::initVoiceClient() void CContextAudioBase::initVoiceClient()
{ {
if (m_voiceClient) { return; } if (m_voiceClient) { return; }
m_voiceClient = new CAfvClient(CVoiceSetup().getAfvVoiceServerUrl(), this);
const CVoiceSetup vs = m_voiceSettings.getThreadLocal(); const CAudioDeviceInfoList devices = CAudioDeviceInfoList::allDevices();
m_voiceClient->updateVoiceServerUrl(vs.getAfvVoiceServerUrl()); if (devices != m_activeLocalDevices)
{
m_activeLocalDevices = devices;
emit this->changedLocalAudioDevices(devices);
}
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
if (!m_winCoInitialized) if (!m_winCoInitialized)
@@ -188,6 +191,10 @@ namespace BlackCore
} }
#endif #endif
m_voiceClient = new CAfvClient(CVoiceSetup().getAfvVoiceServerUrl(), this);
const CVoiceSetup vs = m_voiceSettings.getThreadLocal();
m_voiceClient->updateVoiceServerUrl(vs.getAfvVoiceServerUrl());
Q_ASSERT_X(CThreadUtils::isApplicationThread(m_voiceClient->thread()), Q_FUNC_INFO, "Should be in main thread"); Q_ASSERT_X(CThreadUtils::isApplicationThread(m_voiceClient->thread()), Q_FUNC_INFO, "Should be in main thread");
m_voiceClient->start(); // thread m_voiceClient->start(); // thread
Q_ASSERT_X(m_voiceClient->owner() == this, Q_FUNC_INFO, "Wrong owner"); Q_ASSERT_X(m_voiceClient->owner() == this, Q_FUNC_INFO, "Wrong owner");
@@ -201,13 +208,6 @@ namespace BlackCore
connect(m_voiceClient, &CAfvClient::stoppedAudio, this, &CContextAudioBase::stoppedAudio, Qt::QueuedConnection); connect(m_voiceClient, &CAfvClient::stoppedAudio, this, &CContextAudioBase::stoppedAudio, Qt::QueuedConnection);
connect(m_voiceClient, &CAfvClient::ptt, this, &CContextAudioBase::ptt, Qt::QueuedConnection); connect(m_voiceClient, &CAfvClient::ptt, this, &CContextAudioBase::ptt, Qt::QueuedConnection);
connect(m_voiceClient, &CAfvClient::connectionStatusChanged, this, &CContextAudioBase::onAfvConnectionStatusChanged, Qt::QueuedConnection); connect(m_voiceClient, &CAfvClient::connectionStatusChanged, this, &CContextAudioBase::onAfvConnectionStatusChanged, Qt::QueuedConnection);
const CAudioDeviceInfoList devices = CAudioDeviceInfoList::allDevices();
if (devices != m_activeLocalDevices)
{
m_activeLocalDevices = devices;
emit this->changedLocalAudioDevices(devices);
}
} }
void CContextAudioBase::terminateVoiceClient() void CContextAudioBase::terminateVoiceClient()

View File

@@ -33,7 +33,7 @@ int main(int argc, char *argv[])
QApplication qa(argc, argv); QApplication qa(argc, argv);
Q_UNUSED(qa) // init of qa is required, but qa not used Q_UNUSED(qa) // init of qa is required, but qa not used
initWindowsAudioDevices(); // initWindowsAudioDevices();
CCrashHandler::instance()->init(); CCrashHandler::instance()->init();
CGuiApplication a(CApplicationInfo::swiftCore(), CApplicationInfo::PilotClientCore, CIcons::swiftCore24()); CGuiApplication a(CApplicationInfo::swiftCore(), CApplicationInfo::PilotClientCore, CIcons::swiftCore24());
a.addWindowStateOption(); a.addWindowStateOption();

View File

@@ -30,7 +30,7 @@ int main(int argc, char *argv[])
QApplication qa(argc, argv); QApplication qa(argc, argv);
Q_UNUSED(qa) // application init needed Q_UNUSED(qa) // application init needed
initWindowsAudioDevices(); // initWindowsAudioDevices();
CCrashHandler::instance()->init(); CCrashHandler::instance()->init();
CSwiftGuiStdApplication a; // application with contexts CSwiftGuiStdApplication a; // application with contexts
a.setSignalStartupAutomatically(false); // application will signal startup on its own a.setSignalStartupAutomatically(false); // application will signal startup on its own