From 883ee9c2a06f773a50c2c2f91e7572167505ae5b Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 6 Mar 2019 00:57:49 +0100 Subject: [PATCH] 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. --- libs/ardour/route.cc | 7 +++++++ 1 file changed, 7 insertions(+) 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); }