diff options
Diffstat (limited to 'libs/ardour/route.cc')
-rw-r--r-- | libs/ardour/route.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 6d1dfab77d..8def7e4b5c 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -4221,7 +4221,7 @@ Route::add_export_point() } samplecnt_t -Route::update_signal_latency (bool apply_to_delayline) +Route::update_signal_latency (bool apply_to_delayline, bool* delayline_update_needed) { if (!active()) { _signal_latency = 0; @@ -4303,6 +4303,15 @@ Route::update_signal_latency (bool apply_to_delayline) if (apply_to_delayline) { /* see also Session::post_playback_latency() */ apply_latency_compensation (); + } else if (delayline_update_needed && _delayline) { + samplecnt_t play_lat_in = _input->connected_latency (true); + samplecnt_t latcomp = play_lat_in - play_lat_out - _signal_latency; + if (latcomp < 0) { + latcomp = 0; + } + if (_delayline->delay () != latcomp) { + *delayline_update_needed = true; + } } _output_latency = _output->latency (); |