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 { + 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);