summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-10-03 11:40:34 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-10-06 13:29:57 +1000
commit1195aeb64e785aa9554e2ee3fb7e1b5092ec9bb7 (patch)
tree24e007c15366be4b672b99c2568cac80b0459bee
parent4b9e7386360746232dbdf2609b4e23ef02b0c5e9 (diff)
Handle all errors when starting backend in EngineDialog
-rw-r--r--gtk2_ardour/engine_dialog.cc18
-rw-r--r--gtk2_ardour/engine_dialog.h1
2 files changed, 16 insertions, 3 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index 0c172db1b2..f76008cc43 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -407,6 +407,18 @@ EngineControl::on_show ()
ok_button->grab_focus();
}
+bool
+EngineControl::start_engine ()
+{
+ if (push_state_to_backend(true) != 0) {
+ MessageDialog msg(*this,
+ ARDOUR::AudioEngine::instance()->get_last_backend_error());
+ msg.run();
+ return false;
+ }
+ return true;
+}
+
void
EngineControl::on_response (int response_id)
{
@@ -414,7 +426,7 @@ EngineControl::on_response (int response_id)
switch (response_id) {
case RESPONSE_OK:
- if (push_state_to_backend(true) != 0) {
+ if (!start_engine()) {
return;
} else {
hide();
@@ -2327,7 +2339,7 @@ EngineControl::push_state_to_backend (bool start)
}
if (start || (was_running && restart_required)) {
- if (ARDOUR_UI::instance()->reconnect_to_engine()) {
+ if (ARDOUR::AudioEngine::instance()->start()) {
return -1;
}
}
@@ -2501,7 +2513,7 @@ EngineControl::start_stop_button_clicked ()
if (ARDOUR::AudioEngine::instance()->running()) {
ARDOUR::AudioEngine::instance()->stop ();
} else {
- push_state_to_backend (true);
+ start_engine ();
}
}
diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h
index 6c47b304ab..ea56b94852 100644
--- a/gtk2_ardour/engine_dialog.h
+++ b/gtk2_ardour/engine_dialog.h
@@ -299,6 +299,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
int push_state_to_backend (bool start);
void post_push ();
void update_sensitivity ();
+ bool start_engine ();
/* latency measurement */
void latency_button_clicked ();