13
0

GUI handling for live latency-measurement

This commit is contained in:
Robin Gareus 2015-12-04 17:34:46 +01:00
parent 95f91d9dbd
commit 2529b9db96
2 changed files with 10 additions and 6 deletions

View File

@ -421,9 +421,9 @@ EngineControl::start_engine ()
} }
bool 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, MessageDialog msg(*this,
ARDOUR::AudioEngine::instance()->get_last_backend_error()); ARDOUR::AudioEngine::instance()->get_last_backend_error());
msg.run(); msg.run();
@ -2301,7 +2301,8 @@ EngineControl::push_state_to_backend (bool start)
/* determine if we need to stop the backend before changing parameters */ /* 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_rate && !backend->can_change_sample_rate_when_running()) ||
change_midi || change_midi ||
(change_bufsize && !backend->can_change_buffer_size_when_running())) { (change_bufsize && !backend->can_change_buffer_size_when_running())) {
@ -2379,6 +2380,10 @@ EngineControl::push_state_to_backend (bool start)
} else { } else {
backend->set_midi_device_enabled ((*p)->name, false); 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; continue;
} }
backend->set_midi_device_enabled ((*p)->name, (*p)->enabled); backend->set_midi_device_enabled ((*p)->name, (*p)->enabled);
@ -2630,8 +2635,7 @@ EngineControl::on_switch_page (GtkNotebookPage*, guint page_num)
/* latency tab */ /* latency tab */
if (ARDOUR::AudioEngine::instance()->running()) { if (ARDOUR::AudioEngine::instance()->running()) {
// TODO - mark as 'stopped for latency stop_engine (true);
stop_engine ();
} }
{ {

View File

@ -304,7 +304,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
void post_push (); void post_push ();
void update_sensitivity (); void update_sensitivity ();
bool start_engine (); bool start_engine ();
bool stop_engine (); bool stop_engine (bool for_latency = false);
/* latency measurement */ /* latency measurement */
void latency_button_clicked (); void latency_button_clicked ();