From 450b235d586b862ecd61a0a41b4125fffe8a86c1 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 18 Jun 2017 00:46:22 +0100 Subject: [PATCH] Try to avoid crash on opening preferences on a machine with no audio devices. --- src/wx/config_dialog.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 796972384..03dae5281 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -329,21 +329,25 @@ private: checked_set (_preview_sound, config->preview_sound()); optional const current_so = get_preview_sound_output (); - string configured_so; + optional configured_so; if (config->preview_sound_output()) { configured_so = config->preview_sound_output().get(); } else { /* No configured output means we should use the default */ RtAudio audio (DCPOMATIC_RTAUDIO_API); - configured_so = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name; + try { + configured_so = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name; + } catch (RtAudioError& e) { + /* Probably no audio devices at all */ + } } - if (!current_so || *current_so != configured_so) { + if (configured_so && current_so != configured_so) { /* Update _preview_sound_output with the configured value */ unsigned int i = 0; while (i < _preview_sound_output->GetCount()) { - if (_preview_sound_output->GetString(i) == std_to_wx(configured_so)) { + if (_preview_sound_output->GetString(i) == std_to_wx(*configured_so)) { _preview_sound_output->SetSelection (i); break; } -- 2.30.2