From e02725e418ae931c05c22ff902c95e450bb3f528 Mon Sep 17 00:00:00 2001
From: amerhifi <amer@highfidelity.io>
Date: Wed, 27 Nov 2019 15:30:47 -0800
Subject: [PATCH] input init to dummy to prevent starve and airpods thread lock

---
 libraries/audio-client/src/AudioClient.cpp | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp
index 5502986cff..1eb8403465 100644
--- a/libraries/audio-client/src/AudioClient.cpp
+++ b/libraries/audio-client/src/AudioClient.cpp
@@ -335,9 +335,9 @@ AudioClient::AudioClient() {
     connect(&_receivedAudioStream, &InboundAudioStream::mismatchedAudioCodec, this, &AudioClient::handleMismatchAudioFormat);
 
     // initialize wasapi; if getAvailableDevices is called from the CheckDevicesThread before this, it will crash
-    getAvailableDevices(QAudio::AudioInput, QString());
-    getAvailableDevices(QAudio::AudioOutput, QString());
-    
+    defaultAudioDeviceName(QAudio::AudioInput);
+    defaultAudioDeviceName(QAudio::AudioOutput);
+
     // start a thread to detect any device changes
     _checkDevicesTimer = new QTimer(this);
     const unsigned long DEVICE_CHECK_INTERVAL_MSECS = 2 * 1000;
@@ -787,8 +787,11 @@ void AudioClient::start() {
         inputName = _hmdInputName;
         outputName = _hmdOutputName;
     }
+    
+    //initialize input to the dummy device to prevent starves
+    switchInputToAudioDevice(HifiAudioDeviceInfo());
+    switchOutputToAudioDevice(defaultAudioDeviceForMode(QAudio::AudioOutput, QString())); 
 
-  
 #if defined(Q_OS_ANDROID)
     connect(&_checkInputTimer, &QTimer::timeout, this, &AudioClient::checkInputTimeout);
     _checkInputTimer.start(CHECK_INPUT_READS_MSECS);