From 21aa2f529f27a39bf41bbff041404093460bdbad Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 19 Sep 2017 17:03:28 +0200 Subject: Fix nightly typos'n'thinkos: initial-delay calculation --- libs/ardour/route.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'libs/ardour/route.cc') 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; } -- cgit v1.2.3