diff options
author | Robin Gareus <robin@gareus.org> | 2020-04-27 07:25:32 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-04-27 14:08:37 +0200 |
commit | 8aa4ae825dc99a8112deb9d27664504a04330b94 (patch) | |
tree | 93833536048a7851b4bce59989cd7cdbf09797da /libs/ardour/route.cc | |
parent | 38c61b6dab3b1ae926ec4b791c1fa4dd04463664 (diff) |
Skip delayline updates if no change is required
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 (); |