latency measurement dialog updates:

* distinguish errors: no ports and no engine.
* fix "No measurement results yet" message at successful end
* stop update callback
This commit is contained in:
Robin Gareus 2014-06-19 19:42:59 +02:00 committed by Paul Davis
parent 8ca38ef634
commit b1e3adbc56

View file

@ -531,35 +531,32 @@ EngineControl::enable_latency_tab ()
ARDOUR::AudioEngine::instance()->get_physical_outputs (type, outputs); ARDOUR::AudioEngine::instance()->get_physical_outputs (type, outputs);
ARDOUR::AudioEngine::instance()->get_physical_inputs (type, inputs); ARDOUR::AudioEngine::instance()->get_physical_inputs (type, inputs);
if (!ARDOUR::AudioEngine::instance()->running()) {
MessageDialog msg (_("Failed to start or connect to audio-engine.\n\nLatency calibration requires a working audio interface."));
notebook.set_current_page (0);
msg.run ();
return;
}
else if (inputs.empty() || outputs.empty()) {
MessageDialog msg (_("Your selected audio configuration is playback- or capture-only.\n\nLatency calibration requires playback and capture"));
notebook.set_current_page (0);
msg.run ();
return;
}
if (_measure_midi) { if (_measure_midi) {
lm_preamble.set_markup (_("")); lm_preamble.set_markup (_(""));
} else { } else {
lm_preamble.set_markup (_("<span weight=\"bold\">Turn down the volume on your audio equipment to a very low level.</span>")); lm_preamble.set_markup (_("<span weight=\"bold\">Turn down the volume on your audio equipment to a very low level.</span>"));
} }
if (inputs.empty() || outputs.empty()) { set_popdown_strings (lm_output_channel_combo, outputs);
MessageDialog msg (_("Your selected audio configuration is playback- or capture-only.\n\nLatency calibration requires playback and capture")); lm_output_channel_combo.set_active_text (outputs.front());
lm_measure_button.set_sensitive (false); lm_output_channel_combo.set_sensitive (true);
notebook.set_current_page (0);
msg.run ();
return;
}
if (!outputs.empty()) { set_popdown_strings (lm_input_channel_combo, inputs);
set_popdown_strings (lm_output_channel_combo, outputs); lm_input_channel_combo.set_active_text (inputs.front());
lm_output_channel_combo.set_active_text (outputs.front()); lm_input_channel_combo.set_sensitive (true);
lm_output_channel_combo.set_sensitive (true);
} else {
lm_output_channel_combo.set_sensitive (false);
}
if (!inputs.empty()) {
set_popdown_strings (lm_input_channel_combo, inputs);
lm_input_channel_combo.set_active_text (inputs.front());
lm_input_channel_combo.set_sensitive (true);
} else {
lm_input_channel_combo.set_sensitive (false);
}
lm_measure_button.set_sensitive (true); lm_measure_button.set_sensitive (true);
} }
@ -1866,9 +1863,10 @@ EngineControl::check_audio_latency_measurement ()
} }
if (solid) { if (solid) {
have_lm_results = true;
end_latency_detection (); end_latency_detection ();
lm_use_button.set_sensitive (true); lm_use_button.set_sensitive (true);
have_lm_results = true; return false;
} }
lm_results.set_markup (string_compose (results_markup, buf)); lm_results.set_markup (string_compose (results_markup, buf));
@ -1921,9 +1919,9 @@ EngineControl::check_midi_latency_measurement ()
} }
if (solid) { if (solid) {
have_lm_results = true;
end_latency_detection (); end_latency_detection ();
lm_use_button.set_sensitive (true); lm_use_button.set_sensitive (true);
have_lm_results = true;
return false; return false;
} else if (mididm->processed () > 400) { } else if (mididm->processed () > 400) {
have_lm_results = false; have_lm_results = false;
@ -1973,8 +1971,6 @@ EngineControl::end_latency_detection ()
ARDOUR::AudioEngine::instance()->stop_latency_detection (); ARDOUR::AudioEngine::instance()->stop_latency_detection ();
lm_measure_label.set_text (_("Measure")); lm_measure_label.set_text (_("Measure"));
if (!have_lm_results) { if (!have_lm_results) {
lm_results.set_markup (string_compose (results_markup, _("No measurement results yet")));
} else {
lm_use_button.set_sensitive (false); lm_use_button.set_sensitive (false);
} }
lm_input_channel_combo.set_sensitive (true); lm_input_channel_combo.set_sensitive (true);