diff options
author | Robin Gareus <robin@gareus.org> | 2019-03-06 00:57:49 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-03-06 00:57:49 +0100 |
commit | 883ee9c2a06f773a50c2c2f91e7572167505ae5b (patch) | |
tree | 0bc9822b64636f4596e4fbd27f40191a46f9c055 | |
parent | 2bfe0c6ff7f36610eaf7ff85eb36823a1f446150 (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.cc | 7 |
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); } |