summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-10-10 11:24:16 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-10-10 11:24:16 -0400
commitc4b20f1a20956fa0ab77f36013aceb759837ab9c (patch)
tree03a9f1d4c9b6154cda7411b48949d2ea781d0daf /gtk2_ardour
parent465b800d8b7dc0d9e0f92a16c6fcae29d2bbd544 (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.cc6
-rw-r--r--gtk2_ardour/engine_dialog.cc8
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);
}