From 2e8f94659ef9c53b714e21afb790647ae2422065 Mon Sep 17 00:00:00 2001 From: Imbris Date: Sun, 18 Aug 2019 15:21:16 -0400 Subject: [PATCH] Save settings, start log, & set panic hook first --- voxygen/src/main.rs | 62 ++++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/voxygen/src/main.rs b/voxygen/src/main.rs index d345ad05ae..21016a3412 100644 --- a/voxygen/src/main.rs +++ b/voxygen/src/main.rs @@ -102,19 +102,12 @@ lazy_static! { } fn main() { - // Set up the global state. + // Load the settings let settings = Settings::load(); - let audio = if settings.audio.audio_on { - AudioFrontend::new() - } else { - AudioFrontend::no_audio() - }; - - let mut global_state = GlobalState { - audio, - window: Window::new(&settings).expect("Failed to create window!"), - settings, - }; + // Save settings to add new fields or create the file if it is not already there + if let Err(err) = settings.save_to_file() { + panic!("Failed to save settings: {:?}", err); + } // Initialize logging. let term_log_level = std::env::var_os("VOXYGEN_LOG") @@ -126,24 +119,13 @@ fn main() { WriteLogger::new( log::LevelFilter::Info, Config::default(), - File::create(&global_state.settings.log.file).unwrap(), + File::create(&settings.log.file).unwrap(), ), ]) .unwrap(); - // Initialize discord. (lazy_static initalise lazily...) - #[cfg(feature = "discord")] - { - match DISCORD_INSTANCE.lock() { - Ok(_disc) => { - //great - } - Err(e) => log::error!("Couldn't init discord: {}", e), - } - } - // Set up panic handler to relay swish panic messages to the user - let settings_clone = global_state.settings.clone(); + let settings_clone = settings.clone(); let default_hook = panic::take_hook(); panic::set_hook(Box::new(move |panic_info| { let panic_info_payload = panic_info.payload(); @@ -204,6 +186,30 @@ fn main() { default_hook(panic_info); })); + // Set up the global state. + let audio = if settings.audio.audio_on { + AudioFrontend::new() + } else { + AudioFrontend::no_audio() + }; + + let mut global_state = GlobalState { + audio, + window: Window::new(&settings).expect("Failed to create window!"), + settings, + }; + + // Initialize discord. (lazy_static initalise lazily...) + #[cfg(feature = "discord")] + { + match DISCORD_INSTANCE.lock() { + Ok(_disc) => { + //great + } + Err(e) => log::error!("Couldn't init discord: {}", e), + } + } + match global_state.audio.model.get_genre() { Genre::Bgm => { global_state.settings.audio.audio_device = @@ -290,8 +296,6 @@ fn main() { } } - // Save settings to add new fields or create the file if it is not already there - if let Err(err) = global_state.settings.save_to_file() { - warn!("Failed to save settings: {:?}", err); - } + // Save any unsaved changes to settings + global_state.settings.save_to_file_warn(); }