summaryrefslogtreecommitdiff
path: root/libs/ardour/route.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-06-23 14:19:04 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2017-09-18 11:40:53 -0400
commit79abf3dfa6d649fbf1fb6fd16cd489f434d0b909 (patch)
tree32ff1d2f37f17c8eb627ac2357dff4aea4e149c7 /libs/ardour/route.cc
parentd4280997fb1764ae0df619fbb34031bebd4b0670 (diff)
set + store signal chain latency for all processors; DiskWriter sets its capture_offset appropriately
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r--libs/ardour/route.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 352d36a2c5..b7a57fd3f1 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -1806,6 +1806,8 @@ Route::configure_processors_unlocked (ProcessorStreams* err, Glib::Threads::RWLo
// TODO check for a potential ReaderLock after ReaderLock ??
Glib::Threads::RWLock::ReaderLock lr (_processor_lock);
+ framecnt_t chain_latency = _input->latency ();
+
list< pair<ChanCount,ChanCount> >::iterator c = configuration.begin();
for (ProcessorList::iterator p = _processors.begin(); p != _processors.end(); ++p, ++c) {
@@ -1816,6 +1818,10 @@ Route::configure_processors_unlocked (ProcessorStreams* err, Glib::Threads::RWLo
lm->acquire ();
return -1;
}
+
+ (*p)->set_input_latency (chain_latency);
+ chain_latency += (*p)->signal_latency ();
+
processor_max_streams = ChanCount::max(processor_max_streams, c->first);
processor_max_streams = ChanCount::max(processor_max_streams, c->second);