summaryrefslogtreecommitdiff
path: root/gtk2_ardour/engine_dialog.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-09-11 13:02:32 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-09-11 13:02:32 -0400
commit91e2eab01abe61be89b1860cdb2d24ca8b22c0bc (patch)
tree8dc493a55221501c677ac0f34ca3376f4ac6a44a /gtk2_ardour/engine_dialog.cc
parent18c4c9656a4c8135f97cf74fab1d861b015c6225 (diff)
make use of measured latency values to set dialog controls, and use actual port latency to compute extra delay
Diffstat (limited to 'gtk2_ardour/engine_dialog.cc')
-rw-r--r--gtk2_ardour/engine_dialog.cc23
1 files changed, 22 insertions, 1 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index 17ff0f7217..873498f6ec 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -249,6 +249,7 @@ and microphone.\n\n\
xopt = AttachOptions(0);
lm_measure_button.signal_toggled().connect (sigc::mem_fun (*this, &EngineControl::latency_button_toggled));
+ lm_use_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::use_latency_button_clicked));
lm_use_button.set_sensitive (false);
lm_table.attach (lm_measure_button, 0, 2, row, row+1, xopt, (AttachOptions) 0);
@@ -972,7 +973,10 @@ EngineControl::check_latency_measurement ()
return false;
}
- snprintf (buf, sizeof (buf), "%10.3lf frames %10.3lf ms", mtdm->del (), mtdm->del () * 1000.0f/sample_rate);
+ uint32_t frames_total = mtdm->del();
+ uint32_t extra = frames_total - ARDOUR::AudioEngine::instance()->latency_signal_delay();
+
+ snprintf (buf, sizeof (buf), "%u samples %10.3lf ms", extra, extra * 1000.0f/sample_rate);
bool solid = true;
@@ -1016,3 +1020,20 @@ EngineControl::latency_button_toggled ()
update_latency_display ();
}
}
+
+void
+EngineControl::use_latency_button_clicked ()
+{
+ MTDM* mtdm = ARDOUR::AudioEngine::instance()->mtdm ();
+
+ if (!mtdm) {
+ return;
+ }
+
+ uint32_t frames_total = mtdm->del();
+ uint32_t extra = frames_total - ARDOUR::AudioEngine::instance()->latency_signal_delay();
+ uint32_t one_way = extra/2;
+
+ input_latency_adjustment.set_value (one_way);
+ output_latency_adjustment.set_value (one_way);
+}