From 1195aeb64e785aa9554e2ee3fb7e1b5092ec9bb7 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sat, 3 Oct 2015 11:40:34 +1000 Subject: Handle all errors when starting backend in EngineDialog --- gtk2_ardour/engine_dialog.cc | 18 +++++++++++++++--- gtk2_ardour/engine_dialog.h | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'gtk2_ardour') 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 (); -- cgit v1.2.3