add API to read snapshot name from instant.xml

This commit is contained in:
Robin Gareus 2015-11-20 03:11:39 +01:00
parent c4084932fa
commit 4c04e8028a
2 changed files with 24 additions and 0 deletions

View 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; }

View 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;