diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-10 11:24:16 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-10 11:24:16 -0400 |
commit | c4b20f1a20956fa0ab77f36013aceb759837ab9c (patch) | |
tree | 03a9f1d4c9b6154cda7411b48949d2ea781d0daf /gtk2_ardour | |
parent | 465b800d8b7dc0d9e0f92a16c6fcae29d2bbd544 (diff) |
nicely handle the (should-never-happen) case of no audio/MIDI backends being detected
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 8 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index d09544fcf4..fe773d94e8 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -796,7 +796,11 @@ ARDOUR_UI::starting () * audio backend end up. */ - audio_midi_setup.get (true); + try { + audio_midi_setup.get (true); + } catch (...) { + return -1; + } /* go get a session */ diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index dfd24af739..c9ebcf4cf2 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -30,6 +30,7 @@ #include "pbd/error.h" #include "pbd/xml++.h" #include "pbd/unwind.h" +#include "pbd/failed_constructor.h" #include <gtkmm/alignment.h> #include <gtkmm/stock.h> @@ -94,6 +95,13 @@ EngineControl::EngineControl () */ vector<const ARDOUR::AudioBackendInfo*> backends = ARDOUR::AudioEngine::instance()->available_backends(); + + if (backends.empty()) { + MessageDialog msg (string_compose (_("No audio/MIDI backends detected. %1 cannot run\n\n(This is a build/packaging/system error. It should never happen.)"), PROGRAM_NAME)); + msg.run (); + throw failed_constructor (); + } + for (vector<const ARDOUR::AudioBackendInfo*>::const_iterator b = backends.begin(); b != backends.end(); ++b) { strings.push_back ((*b)->name); } |