diff options
author | Robin Gareus <robin@gareus.org> | 2017-09-19 17:03:28 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-09-19 17:03:28 +0200 |
commit | 21aa2f529f27a39bf41bbff041404093460bdbad (patch) | |
tree | 9de56636bd73f580b014f2e8cf30eb1e7d200ffb /libs/ardour/route.cc | |
parent | f7e35024b6f9e81de49ace3d82ddc30af9012893 (diff) |
Fix nightly typos'n'thinkos: initial-delay calculation
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r-- | libs/ardour/route.cc | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 9ad7510f6d..041640a973 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -3878,21 +3878,20 @@ Route::update_signal_latency (bool set_initial_delay) Glib::Threads::RWLock::ReaderLock lm (_processor_lock); samplecnt_t l_in = _input->latency (); - samplecnt_t l_out = 0; + samplecnt_t l_out = _output->user_latency(); for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) { if ((*i)->active ()) { - l_out += (*i)->signal_latency (); l_in += (*i)->signal_latency (); } (*i)->set_input_latency (l_in); - (*i)->set_output_latency (l_out); } - l_out += _output->user_latency(); - - for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) { - (*i)->set_output_latency (l_out - (*i)->output_latency ()); + for (ProcessorList::reverse_iterator i = _processors.rbegin(); i != _processors.rend(); ++i) { + (*i)->set_output_latency (l_out); + if ((*i)->active ()) { + l_out += (*i)->signal_latency (); + } } DEBUG_TRACE (DEBUG::Latency, string_compose ("%1: internal signal latency = %2\n", _name, l_out)); @@ -3926,8 +3925,8 @@ Route::set_latency_compensation (samplecnt_t longest_session_latency) samplecnt_t old = _initial_delay; assert (!_disk_reader || _disk_reader->output_latency () <= _signal_latency); - if (_disk_reader && _signal_latency < longest_session_latency) { - _initial_delay = longest_session_latency - (_signal_latency - _disk_reader->input_latency ()); + if (_disk_reader && _disk_reader->output_latency () < longest_session_latency) { + _initial_delay = longest_session_latency - _disk_reader->output_latency (); } else { _initial_delay = 0; } |