summaryrefslogtreecommitdiff
path: root/libs/ardour/audioengine.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-09-10 23:25:15 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-09-10 23:25:15 -0400
commitd305dc1e0c3b04c6b014e443c3234d7864d73073 (patch)
treedc232d2e3a3c03391ff3fc243a452a88b83c6c72 /libs/ardour/audioengine.cc
parent676ff806970925972b165cd7621ba7ea8c82c08a (diff)
more tweaks to latency measurement
don't open ports till absolutely necessary (store names for future use). tidy up parts of the dialog (tab)
Diffstat (limited to 'libs/ardour/audioengine.cc')
-rw-r--r--libs/ardour/audioengine.cc33
1 files changed, 28 insertions, 5 deletions
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index 09478e7ef7..249fd4200d 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -985,11 +985,37 @@ AudioEngine::mtdm()
void
AudioEngine::start_latency_detection ()
{
+ PortEngine& pe (port_engine());
+
delete _mtdm;
+ _mtdm = 0;
+
+ /* create the ports we will use to read/write data */
+
+ if ((_latency_output_port = pe.register_port ("latency_out", DataType::AUDIO, IsOutput)) == 0) {
+ return;
+ }
+ if (pe.connect (_latency_output_port, _latency_output_name)) {
+ return;
+ }
+
+ const string portname ("latency_in");
+ if ((_latency_input_port = pe.register_port (portname, DataType::AUDIO, IsInput)) == 0) {
+ pe.unregister_port (_latency_output_port);
+ return;
+ }
+ if (pe.connect (_latency_input_name, make_port_name_non_relative (portname))) {
+ pe.unregister_port (_latency_output_port);
+ return;
+ }
+
+ /* all created and connected, lets go */
_mtdm = new MTDM (sample_rate());
_measuring_latency = true;
_latency_flush_frames = samples_per_cycle();
+
+
}
void
@@ -1003,14 +1029,11 @@ AudioEngine::stop_latency_detection ()
void
AudioEngine::set_latency_output_port (const string& name)
{
- _latency_output_port = port_engine().register_port ("latency_out", DataType::AUDIO, IsOutput);
- port_engine().connect (_latency_output_port, name);
+ _latency_output_name = name;
}
void
AudioEngine::set_latency_input_port (const string& name)
{
- const string portname ("latency_in");
- _latency_input_port = port_engine().register_port (portname, DataType::AUDIO, IsInput);
- port_engine().connect (name, make_port_name_non_relative (portname));
+ _latency_input_name = name;
}