diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-17 21:23:30 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-17 21:23:30 -0400 |
commit | fd23ebd0886cd61f8ee68d52d6576d00a16c9032 (patch) | |
tree | 3266dfd8b1deefc1b8ec60f0c9098d99ecac966c /libs/ardour/audioengine.cc | |
parent | 5e0e41e068a04603198a4e50464d794156f42c47 (diff) | |
parent | 402d92889a358949af3ea7ad0dd5be88a5652626 (diff) |
Merge branch 'master' into cairocanvas
Diffstat (limited to 'libs/ardour/audioengine.cc')
-rw-r--r-- | libs/ardour/audioengine.cc | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 567f3c7671..465f88de56 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -1039,12 +1039,22 @@ AudioEngine::start_latency_detection () delete _mtdm; _mtdm = 0; + /* find the ports we will connect to */ + + PortEngine::PortHandle* out = pe.get_port_by_name (_latency_output_name); + PortEngine::PortHandle* in = pe.get_port_by_name (_latency_input_name); + + if (!out || !in) { + return; + } + /* 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)) { + pe.unregister_port (_latency_output_port); return; } @@ -1060,9 +1070,9 @@ AudioEngine::start_latency_detection () LatencyRange lr; _latency_signal_latency = 0; - lr = pe.get_latency_range (_latency_input_port, false); + lr = pe.get_latency_range (in, false); _latency_signal_latency = lr.max; - lr = pe.get_latency_range (_latency_output_port, true); + lr = pe.get_latency_range (out, true); _latency_signal_latency += lr.max; /* all created and connected, lets go */ @@ -1078,9 +1088,14 @@ AudioEngine::stop_latency_detection () { _measuring_latency = false; - port_engine().unregister_port (_latency_output_port); - port_engine().unregister_port (_latency_input_port); - + if (_latency_output_port) { + port_engine().unregister_port (_latency_output_port); + _latency_output_port = 0; + } + if (_latency_input_port) { + port_engine().unregister_port (_latency_input_port); + _latency_input_port = 0; + } if (_started_for_latency) { stop (); } |