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.
This commit is contained in:
Robin Gareus 2019-03-06 00:57:49 +01:00
parent 2bfe0c6ff7
commit 883ee9c2a0
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -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);
}