add API to read snapshot name from instant.xml
authorRobin Gareus <robin@gareus.org>
Fri, 20 Nov 2015 02:11:39 +0000 (03:11 +0100)
committerRobin Gareus <robin@gareus.org>
Fri, 20 Nov 2015 02:22:41 +0000 (03:22 +0100)
libs/ardour/ardour/session.h
libs/ardour/session_state.cc

index 8a8e8e72e34768ee550d7dab96b3117cf2d3a146..60fa9e57613b6c06d24a4c6fb6130513106fe029 100644 (file)
@@ -173,6 +173,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
        virtual ~Session ();
 
        static int get_info_from_path (const std::string& xmlpath, float& sample_rate, SampleFormat& data_format);
+       static std::string get_snapshot_from_instant (const std::string& session_dir);
 
        std::string path() const { return _path; }
        std::string name() const { return _name; }
index 9e8f8dcf2ddc01a7081c7cecf5a1ef726555bf35..48bacdfe079f31211ae476e0f71fe8e3f4c9145f 100644 (file)
@@ -4216,6 +4216,29 @@ Session::get_info_from_path (const string& xmlpath, float& sample_rate, SampleFo
        return !(found_sr && found_data_format); // zero if they are both found
 }
 
+std::string
+Session::get_snapshot_from_instant (const std::string& session_dir)
+{
+       std::string instant_xml_path = Glib::build_filename (session_dir, "instant.xml");
+
+       if (!Glib::file_test (instant_xml_path, Glib::FILE_TEST_EXISTS)) {
+               return "";
+       }
+
+       XMLTree tree;
+       if (!tree.read (instant_xml_path)) {
+               return "";
+       }
+
+       const XMLProperty* prop;
+       XMLNode *last_used_snapshot = tree.root()->child("LastUsedSnapshot");
+       if (last_used_snapshot && (prop = last_used_snapshot->property ("name")) != 0) {
+               return prop->value();
+       }
+
+       return "";
+}
+
 typedef std::vector<boost::shared_ptr<FileSource> > SeveralFileSources;
 typedef std::map<std::string,SeveralFileSources> SourcePathMap;