diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-08-13 21:59:05 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-08-13 21:59:05 -0400 |
commit | 07c63fb2d72d7c5ef609bd972fa6a3138560d74a (patch) | |
tree | 260dee75a0aa392a7a611ce9b0f31c9bd95ffe0a /libs/ardour/rc_configuration.cc | |
parent | e87424f514d9c8bfbd9851ce338061d693464363 (diff) |
save and restore all ardour-owned MIDI ports
still need to check on MCU port status
Diffstat (limited to 'libs/ardour/rc_configuration.cc')
-rw-r--r-- | libs/ardour/rc_configuration.cc | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/libs/ardour/rc_configuration.cc b/libs/ardour/rc_configuration.cc index 007d6041db..773ecf7d85 100644 --- a/libs/ardour/rc_configuration.cc +++ b/libs/ardour/rc_configuration.cc @@ -27,12 +27,13 @@ #include "pbd/xml++.h" #include "pbd/file_utils.h" +#include "ardour/audioengine.h" #include "ardour/control_protocol_manager.h" #include "ardour/diskstream.h" #include "ardour/filesystem_paths.h" +#include "ardour/port.h" #include "ardour/rc_configuration.h" #include "ardour/session_metadata.h" -#include "ardour/midiport_manager.h" #include "i18n.h" @@ -62,9 +63,12 @@ RCConfiguration::RCConfiguration () { } - RCConfiguration::~RCConfiguration () { + for (list<XMLNode*>::iterator i = _old_midi_port_states.begin(); i != _old_midi_port_states.end(); ++i) { + delete *i; + } + for (list<XMLNode*>::iterator i = _midi_port_states.begin(); i != _midi_port_states.end(); ++i) { delete *i; } @@ -176,20 +180,10 @@ RCConfiguration::get_state () root = new XMLNode("Ardour"); - /* XXX - * GET STATE OF MIDI::Port HERE - */ -#if 0 - MidiPortManager* mm = MidiPortManager::instance(); - - if (mm) { - boost::shared_ptr<const MidiPortManager::PortList> ports = mm->get_midi_ports(); - - for (MidiPortManager::PortList::const_iterator i = ports->begin(); i != ports->end(); ++i) { - // root->add_child_nocopy ((*i)->get_state()); - } - } -#endif + list<XMLNode*> midi_port_nodes = AudioEngine::instance()->get_midi_port_states(); + for (list<XMLNode*>::const_iterator n = midi_port_nodes.begin(); n != midi_port_nodes.end(); ++n) { + root->add_child_nocopy (**n); + } root->add_child_nocopy (get_variables ()); @@ -255,6 +249,8 @@ RCConfiguration::set_state (const XMLNode& root, int version) } else if (node->name() == ControlProtocolManager::state_node_name) { _control_protocol_state = new XMLNode (*node); } else if (node->name() == MIDI::Port::state_node_name) { + _old_midi_port_states.push_back (new XMLNode (*node)); + } else if (node->name() == ARDOUR::Port::state_node_name) { _midi_port_states.push_back (new XMLNode (*node)); } } |