diff options
-rw-r--r-- | libs/ardour/control_protocol_manager.cc | 4 | ||||
-rw-r--r-- | libs/ardour/globals.cc | 2 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 2 | ||||
-rw-r--r-- | libs/surfaces/generic_midi/generic_midi_control_protocol.cc | 5 |
4 files changed, 9 insertions, 4 deletions
diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc index c1c595ebb2..048ff3f7d5 100644 --- a/libs/ardour/control_protocol_manager.cc +++ b/libs/ardour/control_protocol_manager.cc @@ -452,7 +452,7 @@ ControlProtocolManager::cpi_by_name (string name) } int -ControlProtocolManager::set_state (const XMLNode& node, int /*version*/) +ControlProtocolManager::set_state (const XMLNode& node, int session_specific_state /* here: not version */) { XMLNodeList clist; XMLNodeConstIterator citer; @@ -483,6 +483,7 @@ ControlProtocolManager::set_state (const XMLNode& node, int /*version*/) if (active) { delete cpi->state; cpi->state = new XMLNode (**citer); + cpi->state->set_property (X_("session-state"), session_specific_state ? true : false); if (_session) { instantiate (*cpi); } else { @@ -492,6 +493,7 @@ ControlProtocolManager::set_state (const XMLNode& node, int /*version*/) if (!cpi->state) { cpi->state = new XMLNode (**citer); cpi->state->set_property (X_("active"), false); + cpi->state->set_property (X_("session-state"), session_specific_state ? true : false); } cpi->requested = false; if (_session) { diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index fc17b3a5e9..eab0b93a41 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -599,7 +599,7 @@ ARDOUR::init_post_engine () XMLNode* node; if ((node = Config->control_protocol_state()) != 0) { - ControlProtocolManager::instance().set_state (*node, Stateful::loading_state_version); + ControlProtocolManager::instance().set_state (*node, 0 /* here: global-config state */); } if ((node = Config->transport_master_state()) != 0) { diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 1335c554cb..0c974fcc84 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -1729,7 +1729,7 @@ Session::set_state (const XMLNode& node, int version) } if ((child = find_named_node (node, ControlProtocolManager::state_node_name)) != 0) { - ControlProtocolManager::instance().set_state (*child, version); + ControlProtocolManager::instance().set_state (*child, 1 /* here: session-specific state */); } if ((child = find_named_node (node, "Script"))) { diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc index 4d931b8fe0..214c9fede7 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -669,7 +669,10 @@ GenericMidiControlProtocol::set_state (const XMLNode& node, int version) * <Controls><MidiControllable>...</MidiControllable><Controls> section */ - { + bool load_dynamic_bindings = false; + node.get_property ("session-state", load_dynamic_bindings); + + if (load_dynamic_bindings) { Glib::Threads::Mutex::Lock lm2 (controllables_lock); nlist = node.children(); // "Controls" |