diff options
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/route.h | 3 | ||||
-rw-r--r-- | libs/ardour/route.cc | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 08f9465803..ef102a9b48 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -355,6 +355,8 @@ public: samplecnt_t signal_latency() const { return _signal_latency; } samplecnt_t playback_latency (bool incl_downstream = false) const; + virtual samplecnt_t output_latency () const { return _output_latency; } + PBD::Signal0<void> active_changed; PBD::Signal0<void> denormal_protection_changed; PBD::Signal0<void> comment_changed; @@ -615,6 +617,7 @@ protected: bool _active; samplecnt_t _signal_latency; + samplecnt_t _output_latency; ProcessorList _processors; mutable Glib::Threads::RWLock _processor_lock; diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 3ba9a80f99..c50b4aab25 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -383,7 +383,7 @@ Route::process_output_buffers (BufferSet& bufs, const double speed = (is_auditioner() ? 1.0 : _session.transport_speed ()); - const sampleoffset_t latency_offset = _signal_latency + _output->latency (); + const sampleoffset_t latency_offset = _signal_latency + output_latency (); if (speed < 0) { /* when rolling backwards this can become negative */ start_sample -= latency_offset; @@ -4302,6 +4302,8 @@ Route::update_signal_latency (bool apply_to_delayline) apply_latency_compensation (); } + _output_latency = _output->latency (); + return _signal_latency; } |