summaryrefslogtreecommitdiff
path: root/libs/ardour/audioengine.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-09-17 21:22:56 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-09-17 21:22:56 -0400
commit302b08c0592a6b7c40dec8c04f52c346e14b17af (patch)
treefd4a8d9d661988c330bdfba492456bea63d0c669 /libs/ardour/audioengine.cc
parentfb45fdc052b23f4b2210c71a03a14bdb5986098a (diff)
parent402d92889a358949af3ea7ad0dd5be88a5652626 (diff)
Merge branch 'master' into windows
Diffstat (limited to 'libs/ardour/audioengine.cc')
-rw-r--r--libs/ardour/audioengine.cc25
1 files changed, 20 insertions, 5 deletions
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index ebebac5774..05fc469c77 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -1037,12 +1037,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;
}
@@ -1058,9 +1068,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 */
@@ -1076,9 +1086,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 ();
}