summaryrefslogtreecommitdiff
path: root/gtk2_ardour/engine_dialog.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-05-06 00:13:47 +0200
committerRobin Gareus <robin@gareus.org>2019-05-06 00:13:47 +0200
commitae181f5f667b7cbca9410a7b36a6efad90e7ed7f (patch)
tree63f2b0130cd83cc5629f5b01f4cac0fb8a395ddf /gtk2_ardour/engine_dialog.cc
parent837678bdccf1c18a13e91ee752734bd483f9355c (diff)
Fix MIDI latency measurement
* Restore active state of devices after measurement * Don't manually set latencies for measurement (backend handles this) * remove superfluous call to stop measurement
Diffstat (limited to 'gtk2_ardour/engine_dialog.cc')
-rw-r--r--gtk2_ardour/engine_dialog.cc18
1 files changed, 13 insertions, 5 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index 0db5370798..e971dc5ef1 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -2516,15 +2516,13 @@ EngineControl::push_state_to_backend (bool start)
if (1 /* TODO */) {
for (vector<MidiDeviceSettings>::const_iterator p = _midi_devices.begin(); p != _midi_devices.end(); ++p) {
if (_measure_midi) {
+ /* Disable other MIDI devices while measuring.
+ * This is a hack to only show ports from the selected device */
if (*p == _measure_midi) {
backend->set_midi_device_enabled ((*p)->name, true);
} 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);
@@ -2805,6 +2803,17 @@ EngineControl::on_switch_page (GtkNotebookPage*, guint page_num)
if (page_num == midi_tab) {
/* MIDI tab */
refresh_midi_display ();
+
+ /* undo special case from push_state_to_backend() when measuring midi latency */
+ if (_measure_midi && ARDOUR::AudioEngine::instance()->running ()) {
+ boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
+ if (backend->can_change_systemic_latency_when_running ()) {
+ for (vector<MidiDeviceSettings>::const_iterator p = _midi_devices.begin(); p != _midi_devices.end(); ++p) {
+ backend->set_midi_device_enabled ((*p)->name, (*p)->enabled);
+ }
+ }
+ }
+ _measure_midi.reset();
}
if (page_num == latency_tab) {
@@ -2850,7 +2859,6 @@ EngineControl::on_switch_page (GtkNotebookPage*, guint page_num)
} else {
if (lm_running) {
end_latency_detection ();
- ARDOUR::AudioEngine::instance()->stop_latency_detection();
}
}
}