silly me
[ardour.git] / libs / ardour / session_state.cc
index e14c1c37793614a2a21c322ced74decbd60993d4..f704bbad5fc6aa0f58b82001f5d9f0e58a0a985a 100644 (file)
@@ -117,6 +117,9 @@ Session::first_stage_init (string fullpath, string snapshot_name)
                _path += '/';
        }
 
+       set_history_depth (Config->get_history_depth());
+       
+
        /* these two are just provisional settings. set_state()
           will likely override them.
        */
@@ -814,13 +817,17 @@ Session::load_state (string snapshot_name)
                backup_path += "-1";
                backup_path += _statefile_suffix;
 
-               info << string_compose (_("Copying old session file %1 to %2\nUse %2 with Ardour versions before 2.0 from now on"),
-                                       xmlpath, backup_path) 
-                    << endmsg;
-
-               copy_file (xmlpath, backup_path);
+               /* don't make another copy if it already exists */
 
-               /* if it fails, don't worry. right? */
+               if (!Glib::file_test (backup_path, Glib::FILE_TEST_EXISTS)) {
+                       info << string_compose (_("Copying old session file %1 to %2\nUse %2 with Ardour versions before 2.0 from now on"),
+                                               xmlpath, backup_path) 
+                            << endmsg;
+                       
+                       copy_file (xmlpath, backup_path);
+                       
+                       /* if it fails, don't worry. right? */
+               }
        }
 
        return 0;
@@ -895,7 +902,7 @@ Session::state(bool full_state)
        // store libardour version, just in case
        char buf[16];
        snprintf(buf, sizeof(buf)-1, "%d.%d.%d", 
-                libardour_major_version, libardour_minor_version, libardour_micro_version);
+                libardour2_major_version, libardour2_minor_version, libardour2_micro_version);
        node->add_property("version", string(buf));
                
        /* store configuration settings */
@@ -2975,7 +2982,6 @@ Session::add_instant_xml (XMLNode& node, const std::string& dir)
        Config->add_instant_xml (node, get_user_ardour_path());
 }
 
-
 int 
 Session::save_history (string snapshot_name)
 {
@@ -2983,8 +2989,6 @@ Session::save_history (string snapshot_name)
     string xml_path;
     string bak_path;
 
-    tree.set_root (&_history.get_state (Config->get_saved_history_depth()));
-
     if (snapshot_name.empty()) {
        snapshot_name = _current_snapshot_name;
     }
@@ -2993,13 +2997,17 @@ Session::save_history (string snapshot_name)
 
     bak_path = xml_path + ".bak";
 
-    if ((access (xml_path.c_str(), F_OK) == 0) &&
-        (rename (xml_path.c_str(), bak_path.c_str())))
-    {
+    if (Glib::file_test (xml_path, Glib::FILE_TEST_EXISTS) && ::rename (xml_path.c_str(), bak_path.c_str())) {
         error << _("could not backup old history file, current history not saved.") << endmsg;
         return -1;
     }
 
+    if (!Config->get_save_history() || Config->get_saved_history_depth() < 0) {
+           return 0;
+    }
+
+    tree.set_root (&_history.get_state (Config->get_saved_history_depth()));
+
     if (!tree.write (xml_path))
     {
         error << string_compose (_("history could not be saved to %1"), xml_path) << endmsg;
@@ -3037,8 +3045,7 @@ Session::restore_history (string snapshot_name)
     xmlpath = _path + snapshot_name + ".history";
     cerr << string_compose(_("Loading history from '%1'."), xmlpath) << endmsg;
 
-    if (access (xmlpath.c_str(), F_OK)) {
-           info << string_compose (_("%1: no history file \"%2\" for this session."), _name, xmlpath) << endmsg;
+    if (!Glib::file_test (xmlpath, Glib::FILE_TEST_EXISTS)) {
            return 1;
     }
 
@@ -3165,15 +3172,11 @@ Session::config_changed (const char* parameter_name)
 
        } else if (PARAM_IS ("mmc-device-id") || PARAM_IS ("mmc-receive-device-id")) {
 
-               if (mmc) {
-                       mmc->set_receive_device_id (Config->get_mmc_receive_device_id());
-               }
+               set_mmc_receive_device_id (Config->get_mmc_receive_device_id());
 
        } else if (PARAM_IS ("mmc-send-device-id")) {
 
-               if (mmc) {
-                       mmc->set_send_device_id (Config->get_mmc_send_device_id());
-               }
+               set_mmc_send_device_id (Config->get_mmc_send_device_id());
 
        } else if (PARAM_IS ("midi-control")) {
                
@@ -3284,8 +3287,12 @@ Session::config_changed (const char* parameter_name)
                set_slave_source (Config->get_slave_source());
        } else if (PARAM_IS ("remote-model")) {
                set_remote_control_ids ();
-       }  else if (PARAM_IS ("denormal-model")) {
+       } else if (PARAM_IS ("denormal-model")) {
                setup_fpu ();
+       } else if (PARAM_IS ("history-depth")) {
+               set_history_depth (Config->get_history_depth());
+       } else if (PARAM_IS ("sync-all-route-ordering")) {
+               sync_order_keys ();
        }
 
        set_dirty ();
@@ -3293,3 +3300,9 @@ Session::config_changed (const char* parameter_name)
 #undef PARAM_IS
 
 }
+
+void
+Session::set_history_depth (uint32_t d)
+{
+       _history.set_depth (d);
+}