diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-10 23:25:15 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-10 23:25:15 -0400 |
commit | d305dc1e0c3b04c6b014e443c3234d7864d73073 (patch) | |
tree | dc232d2e3a3c03391ff3fc243a452a88b83c6c72 /libs/ardour | |
parent | 676ff806970925972b165cd7621ba7ea8c82c08a (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')
-rw-r--r-- | libs/ardour/ardour/audioengine.h | 2 | ||||
-rw-r--r-- | libs/ardour/audioengine.cc | 33 |
2 files changed, 30 insertions, 5 deletions
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 980f507be5..c9d789d746 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -220,6 +220,8 @@ public: PortEngine::PortHandle _latency_input_port; PortEngine::PortHandle _latency_output_port; framecnt_t _latency_flush_frames; + std::string _latency_input_name; + std::string _latency_output_name; void meter_thread (); void start_metering_thread (); 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; } |