fix failure to find route templates
[ardour.git] / libs / ardour / rc_configuration.cc
index 3ca4868f63a4a8e5866efad00ceb7e8c69c8b5af..8c4650b2e6c0e6da8ede8a36128ff355f66a0a14 100644 (file)
@@ -78,18 +78,12 @@ RCConfiguration::~RCConfiguration ()
 int
 RCConfiguration::load_state ()
 {
-       bool found = false;
-
        sys::path system_rc_file;
        struct stat statbuf;
 
        /* load system configuration first */
 
-       if (find_file_in_search_path (ardour_search_path() + system_config_search_path(),
-                       "ardour_system.rc", system_rc_file) )
-       {
-               found = true;
-
+       if (find_file_in_search_path (ardour_search_path() + system_config_search_path(), "ardour_system.rc", system_rc_file)) {
                string rcfile = system_rc_file.to_string();
 
                /* stupid XML Parser hates empty files */
@@ -120,11 +114,7 @@ RCConfiguration::load_state ()
 
        sys::path user_rc_file;
 
-       if (find_file_in_search_path (ardour_search_path() + user_config_directory(),
-                       "ardour.rc", user_rc_file))
-       {
-               found = true;
-
+       if (find_file_in_search_path (ardour_search_path() + user_config_directory(), "ardour.rc", user_rc_file)) {
                string rcfile = user_rc_file.to_string();
 
                /* stupid XML parser hates empty files */
@@ -151,9 +141,6 @@ RCConfiguration::load_state ()
                }
        }
 
-       if (!found)
-               error << string_compose (_("%1: could not find configuration file (ardour.rc), canvas will look broken."), PROGRAM_NAME) << endmsg;
-
        return 0;
 }
 
@@ -209,11 +196,15 @@ RCConfiguration::get_state ()
 
        root = new XMLNode("Ardour");
 
-       const MIDI::Manager::PortList& ports = MIDI::Manager::instance()->get_midi_ports();
+        MIDI::Manager* mm = MIDI::Manager::instance();
 
-       for (MIDI::Manager::PortList::const_iterator i = ports.begin(); i != ports.end(); ++i) {
-               root->add_child_nocopy((*i)->get_state());
-       }
+        if (mm) {
+               boost::shared_ptr<const MIDI::Manager::PortList> ports = mm->get_midi_ports();
+
+                for (MIDI::Manager::PortList::const_iterator i = ports->begin(); i != ports->end(); ++i) {
+                        root->add_child_nocopy((*i)->get_state());
+                }
+        }
 
        root->add_child_nocopy (get_variables ());
 
@@ -264,14 +255,14 @@ RCConfiguration::set_state (const XMLNode& root, int /*version*/)
 
        _midi_port_states.clear ();
 
+       Stateful::save_extra_xml (root);
+
        for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
 
                node = *niter;
 
                if (node->name() == "Config") {
                        set_variables (*node);
-               } else if (node->name() == "Extra") {
-                       _extra_xml = new XMLNode (*node);
                } else if (node->name() == ControlProtocolManager::state_node_name) {
                        _control_protocol_state = new XMLNode (*node);
                } else if (node->name() == MIDI::Port::state_node_name) {