save version string with session for informational purposes
authorRobin Gareus <robin@gareus.org>
Wed, 1 Jun 2016 20:27:55 +0000 (22:27 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 1 Jun 2016 20:43:40 +0000 (22:43 +0200)
libs/ardour/ardour/session.h
libs/ardour/session.cc
libs/ardour/session_state.cc

index f35e3b6f193769668923a41b388604a8fd8c07fd..341c49232f3fe64e88bcfbf8a0cb80a071d21a90 100644 (file)
@@ -2007,6 +2007,8 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        VCAManager* _vca_manager;
 
        boost::shared_ptr<Route> get_midi_nth_route_by_id (PresentationInfo::order_t n) const;
+
+       std::string created_with;
 };
 
 
index 1d285d66115ff91211d2b0ff66f4bfa41fe87c4b..d8e19b9c1d50345cb72e8554d4655205c49ad26c 100644 (file)
@@ -90,6 +90,7 @@
 #include "ardour/recent_sessions.h"
 #include "ardour/region.h"
 #include "ardour/region_factory.h"
+#include "ardour/revision.h"
 #include "ardour/route_graph.h"
 #include "ardour/route_group.h"
 #include "ardour/send.h"
@@ -316,6 +317,8 @@ Session::Session (AudioEngine &eng,
 {
        uint32_t sr = 0;
 
+       created_with = string_compose ("%1 %2", PROGRAM_NAME, revision);
+
        pthread_mutex_init (&_rt_emit_mutex, 0);
        pthread_cond_init (&_rt_emit_cond, 0);
 
index 54cb87b82f83af809c662f6636fe1b02383d06ba..7fb110da7a6bd36dc7281cad6540a071ff4b2003 100644 (file)
 #include "ardour/proxy_controllable.h"
 #include "ardour/recent_sessions.h"
 #include "ardour/region_factory.h"
+#include "ardour/revision.h"
 #include "ardour/route_group.h"
 #include "ardour/send.h"
 #include "ardour/session.h"
@@ -1051,6 +1052,12 @@ Session::state (bool full_state)
        snprintf(buf, sizeof(buf), "%d", CURRENT_SESSION_FILE_VERSION);
        node->add_property("version", buf);
 
+       child = node->add_child ("ProgramVersion");
+       child->add_property("created-with", created_with);
+
+       std::string modified_with = string_compose ("%1 %2", PROGRAM_NAME, revision);
+       child->add_property("modified-with", modified_with);
+
        /* store configuration settings */
 
        if (full_state) {
@@ -1343,6 +1350,13 @@ Session::set_state (const XMLNode& node, int version)
                }
        }
 
+       created_with = "unknown";
+       if ((child = find_named_node (node, "ProgramVersion")) != 0) {
+               if ((prop = child->property (X_("created-with"))) != 0) {
+                       created_with = prop->value ();
+               }
+       }
+
        setup_raid_path(_session_dir->root_path());
 
        if ((prop = node.property (X_("id-counter"))) != 0) {