From 2529b9db963b1dba66cdfeda94d938cf09ab4873 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 4 Dec 2015 17:34:46 +0100 Subject: GUI handling for live latency-measurement --- gtk2_ardour/engine_dialog.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'gtk2_ardour/engine_dialog.cc') diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 3019c169d8..8c0694713d 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -421,9 +421,9 @@ EngineControl::start_engine () } bool -EngineControl::stop_engine () +EngineControl::stop_engine (bool for_latency) { - if (ARDOUR::AudioEngine::instance()->stop()) { + if (ARDOUR::AudioEngine::instance()->stop(for_latency)) { MessageDialog msg(*this, ARDOUR::AudioEngine::instance()->get_last_backend_error()); msg.run(); @@ -2301,7 +2301,8 @@ EngineControl::push_state_to_backend (bool start) /* determine if we need to stop the backend before changing parameters */ - if (change_driver || change_device || change_channels || change_latency || + if (change_driver || change_device || change_channels || + (change_latency && !backend->can_change_systemic_latency_when_running ()) || (change_rate && !backend->can_change_sample_rate_when_running()) || change_midi || (change_bufsize && !backend->can_change_buffer_size_when_running())) { @@ -2379,6 +2380,10 @@ EngineControl::push_state_to_backend (bool start) } else { backend->set_midi_device_enabled ((*p)->name, false); } + if (backend->can_change_systemic_latency_when_running ()) { + backend->set_systemic_midi_input_latency ((*p)->name, 0); + backend->set_systemic_midi_output_latency ((*p)->name, 0); + } continue; } backend->set_midi_device_enabled ((*p)->name, (*p)->enabled); @@ -2630,8 +2635,7 @@ EngineControl::on_switch_page (GtkNotebookPage*, guint page_num) /* latency tab */ if (ARDOUR::AudioEngine::instance()->running()) { - // TODO - mark as 'stopped for latency - stop_engine (); + stop_engine (true); } { -- cgit v1.2.3