summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-03-06 00:57:49 +0100
committerRobin Gareus <robin@gareus.org>2019-03-06 00:57:49 +0100
commit883ee9c2a06f773a50c2c2f91e7572167505ae5b (patch)
tree0bc9822b64636f4596e4fbd27f40191a46f9c055
parent2bfe0c6ff7f36610eaf7ff85eb36823a1f446150 (diff)
Allow to call set_state() on existing routes
Delaylines are not saved in the XML and internal-return is an invisible processor not explicitly re-added when the state is restored. They are [re]inserted during Route::setup_invisible_processors(). So this method need to be called after restoring processor state (indirectly via configure_processors_unlocked as needed). PS. During route creation this call happens explicitly and on session load hookup_io() -> Route::output_change_handler() implicitly sets this up.
-rw-r--r--libs/ardour/route.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 89ab442e18..50e0672052 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -2969,6 +2969,13 @@ Route::set_processor_state (const XMLNode& node)
*/
_processors = new_order;
+ if (_delayline) {
+ must_configure |= find (_processors.begin(), _processors.end(), _delayline) == _processors.end ();
+ }
+ if (_intreturn) {
+ must_configure |= find (_processors.begin(), _processors.end(), _intreturn) == _processors.end ();
+ }
+
if (must_configure) {
configure_processors_unlocked (0, &lm);
}