diff options
Diffstat (limited to 'src/lib/film.cc')
| -rw-r--r-- | src/lib/film.cc | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index f77273001..fb5014b3a 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -93,7 +93,7 @@ int const Film::state_version = 7; * @param dir Film directory. */ -Film::Film (boost::filesystem::path dir) +Film::Film (boost::filesystem::path dir, bool log) : _playlist (new Playlist) , _use_dci_name (true) , _dcp_content_type (Config::instance()->default_dcp_content_type ()) @@ -136,7 +136,11 @@ Film::Film (boost::filesystem::path dir) } set_directory (result); - _log.reset (new FileLog (file ("log"))); + if (log) { + _log.reset (new FileLog (file ("log"))); + } else { + _log.reset (new NullLog); + } _playlist->set_sequence_video (_sequence_video); } @@ -327,20 +331,13 @@ Film::encoded_frames () const return N; } -/** Write state to our `metadata' file */ -void -Film::write_metadata () const +shared_ptr<xmlpp::Document> +Film::metadata () const { - if (!boost::filesystem::exists (directory ())) { - boost::filesystem::create_directory (directory ()); - } - LocaleGuard lg; - boost::filesystem::create_directories (directory ()); - - xmlpp::Document doc; - xmlpp::Element* root = doc.create_root_node ("Metadata"); + shared_ptr<xmlpp::Document> doc (new xmlpp::Document); + xmlpp::Element* root = doc->create_root_node ("Metadata"); root->add_child("Version")->add_child_text (lexical_cast<string> (state_version)); root->add_child("Name")->add_child_text (_name); @@ -370,8 +367,16 @@ Film::write_metadata () const root->add_child("Key")->add_child_text (_key.hex ()); _playlist->as_xml (root->add_child ("Playlist")); - doc.write_to_file_formatted (file("metadata.xml").string ()); - + return doc; +} + +/** Write state to our `metadata' file */ +void +Film::write_metadata () const +{ + boost::filesystem::create_directories (directory ()); + shared_ptr<xmlpp::Document> doc = metadata (); + doc->write_to_file_formatted (file("metadata.xml").string ()); _dirty = false; } |
