From c82d1b9316900e955320b79b3a33c654003b37b5 Mon Sep 17 00:00:00 2001
From: Marli Frost <marli@frost.red>
Date: Sat, 28 Mar 2020 13:12:35 +0000
Subject: [PATCH] allow the game to start without an audio device

---
 voxygen/src/audio/mod.rs |  7 ++-----
 voxygen/src/main.rs      | 17 +++++++++--------
 2 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/voxygen/src/audio/mod.rs b/voxygen/src/audio/mod.rs
index 1709649c89..299a8c53fe 100644
--- a/voxygen/src/audio/mod.rs
+++ b/voxygen/src/audio/mod.rs
@@ -238,11 +238,8 @@ impl AudioFrontend {
 
 /// Returns the default audio device.
 /// Does not return rodio Device struct in case our audio backend changes.
-pub fn get_default_device() -> String {
-    rodio::default_output_device()
-        .expect("No audio output devices detected.")
-        .name()
-        .expect("Unable to get device name")
+pub fn get_default_device() -> Option<String> {
+    rodio::default_output_device().map(|dev| dev.name().expect("Unable to get device name"))
 }
 
 /// Returns a vec of the audio devices available.
diff --git a/voxygen/src/main.rs b/voxygen/src/main.rs
index 43b6726ab6..f27beab1ff 100644
--- a/voxygen/src/main.rs
+++ b/voxygen/src/main.rs
@@ -44,15 +44,16 @@ fn main() {
         panic!("Failed to save settings: {:?}", err);
     }
 
-    let audio_device = || match &settings.audio.audio_device {
-        Some(d) => d.to_string(),
-        None => audio::get_default_device(),
-    };
+    let audio_device = settings
+        .audio
+        .audio_device
+        .as_ref()
+        .map(|s| s.clone())
+        .or_else(audio::get_default_device);
 
-    let mut audio = if settings.audio.audio_on {
-        AudioFrontend::new(audio_device(), settings.audio.max_sfx_channels)
-    } else {
-        AudioFrontend::no_audio()
+    let mut audio = match (audio_device, settings.audio.audio_on) {
+        (Some(dev), true) => AudioFrontend::new(dev, settings.audio.max_sfx_channels),
+        _ => AudioFrontend::no_audio()
     };
 
     audio.set_music_volume(settings.audio.music_volume);