X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fdcp_content.cc;h=87e59de50bc7ca27a14bfcde1d39b109b4e45429;hp=231a93bd0bec27c37574b785428ca792a185ffbb;hb=550794a2a289c4d738292ab74639e1496f55e07e;hpb=c291a92c51be6ad9ee6c43bd0ec93aec06ac981c diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc index 231a93bd0..87e59de50 100644 --- a/src/lib/dcp_content.cc +++ b/src/lib/dcp_content.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2022 Carl Hetherington + Copyright (C) 2014-2023 Carl Hetherington This file is part of DCP-o-matic. @@ -31,6 +31,7 @@ #include "job.h" #include "log.h" #include "overlaps.h" +#include "scope_guard.h" #include "text_content.h" #include "video_content.h" #include @@ -191,16 +192,18 @@ DCPContent::read_directory (boost::filesystem::path p) void DCPContent::read_sub_directory (boost::filesystem::path p) { + using namespace boost::filesystem; + LOG_GENERAL ("DCPContent::read_sub_directory reads %1", p.string()); - for (auto i: boost::filesystem::directory_iterator(p)) { - if (boost::filesystem::is_regular_file(i.path())) { + for (auto i: directory_iterator(p)) { + if (is_regular_file(i.path())) { LOG_GENERAL ("Inside there's regular file %1", i.path().string()); add_path (i.path()); - } else if (boost::filesystem::is_directory(i.path()) && i.path().filename() != ".AppleDouble") { + } else if (is_directory(i.path()) && i.path().filename() != ".AppleDouble") { LOG_GENERAL ("Inside there's directory %1", i.path().string()); read_sub_directory (i.path()); } else { - LOG_GENERAL("Ignoring %1 from inside: status is %2", i.path().string(), static_cast(boost::filesystem::status(i.path()).type())); + LOG_GENERAL("Ignoring %1 from inside: status is %2", i.path().string(), static_cast(status(i.path()).type())); } } } @@ -213,6 +216,11 @@ DCPContent::examine (shared_ptr film, shared_ptr job) bool const needed_kdm = needs_kdm (); string const old_name = name (); + ContentChangeSignalDespatcher::instance()->suspend(); + ScopeGuard sg = []() { + ContentChangeSignalDespatcher::instance()->resume(); + }; + ContentChangeSignaller cc_texts (this, DCPContentProperty::TEXTS); ContentChangeSignaller cc_assets (this, DCPContentProperty::NEEDS_ASSETS); ContentChangeSignaller cc_kdm (this, DCPContentProperty::NEEDS_KDM); @@ -270,6 +278,7 @@ DCPContent::examine (shared_ptr film, shared_ptr job) for (int i = 0; i < examiner->text_count(TextType::CLOSED_CAPTION); ++i) { auto c = make_shared(this, TextType::CLOSED_CAPTION, TextType::CLOSED_CAPTION); c->set_dcp_track (examiner->dcp_text_track(i)); + add_fonts_from_examiner(c, examiner->fonts()); new_text.push_back (c); } @@ -825,8 +834,9 @@ add_fonts_from_examiner(shared_ptr text, vectorset_id(id_for_font_in_reel(font->id(), reel_number)); - text->add_font(font); + auto font_copy = make_shared(*font); + font_copy->set_id(id_for_font_in_reel(font->id(), reel_number)); + text->add_font(font_copy); } ++reel_number; }