diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 60082e582e..4bac8e4a7e 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -2966,6 +2966,8 @@ EngineControl::on_switch_page (GtkNotebookPage*, guint page_num) if (page_num == latency_tab) { /* latency tab */ + was_running_before_lm = ARDOUR::AudioEngine::instance()->running(); + if (ARDOUR::AudioEngine::instance()->running()) { stop_engine (true); } @@ -3199,6 +3201,14 @@ EngineControl::latency_back_button_clicked () ARDOUR::AudioEngine::instance()->stop_latency_detection (); notebook.set_current_page(0); + + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + if (backend && backend->can_change_systemic_latency_when_running ()) { + /* IFF engine was not running before latency detection, stop it */ + if (!was_running_before_lm && ARDOUR::AudioEngine::instance()->running()) { + stop_engine (); + } + } } void diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index e4b4f2c8e2..39fc23ed0d 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -131,6 +131,7 @@ private: Gtk::VBox lm_vbox; bool have_lm_results; bool lm_running; + bool was_running_before_lm; /* MIDI Tab */