From a2f7abc70b52b53ddeda985b7941e944e7bfec12 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 10 Apr 2020 01:23:00 +0200 Subject: [PATCH] Continue to load session after MIDI latency calibration This amends e6febe040a --- gtk2_ardour/engine_dialog.cc | 15 +++++++++------ gtk2_ardour/engine_dialog.h | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index a45c97aa05..3f4438de1e 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -115,6 +115,7 @@ EngineControl::EngineControl () , queue_device_changed (false) , _have_control (true) , block_signals(0) + , _was_calibrating_midi (false) { using namespace Notebook_Helpers; vector backend_names; @@ -2869,8 +2870,6 @@ EngineControl::set_desired_sample_rate (uint32_t sr) void EngineControl::on_switch_page (GtkNotebookPage*, guint page_num) { - bool was_calibrating_midi = _measure_midi != 0; - if (page_num == 0) { _measure_midi.reset(); update_sensitivity (); @@ -2942,11 +2941,14 @@ EngineControl::on_switch_page (GtkNotebookPage*, guint page_num) * RESPONSE_OK is a NO-OP when the dialog is displayed as Window * from a running instance. */ - if (page_num == 0 && _have_control && was_calibrating_midi && ARDOUR::AudioEngine::instance()->running()) { - boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - if (backend && backend->can_change_systemic_latency_when_running ()) { - response (RESPONSE_OK); + if (page_num == 0) { + if (_have_control && _was_calibrating_midi && ARDOUR::AudioEngine::instance()->running()) { + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + if (backend && backend->can_change_systemic_latency_when_running ()) { + response (RESPONSE_OK); + } } + _was_calibrating_midi = false; } } @@ -3162,6 +3164,7 @@ EngineControl::use_latency_button_clicked () if (backend->can_change_systemic_latency_when_running ()) { backend->set_systemic_midi_input_latency (_measure_midi->name, one_way); backend->set_systemic_midi_output_latency (_measure_midi->name, one_way); + _was_calibrating_midi = true; } notebook.set_current_page (midi_tab); } else { diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 5d3d6854d9..b63261e8a9 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -373,6 +373,7 @@ private: void midi_latency_adjustment_changed(Gtk::Adjustment *, MidiDeviceSettings, bool); void midi_device_enabled_toggled(ArdourWidgets::ArdourButton *, MidiDeviceSettings); sigc::connection lm_back_button_signal; + bool _was_calibrating_midi; }; #endif /* __gtk2_ardour_engine_dialog_h__ */