/*
- Copyright (C) 2014-2022 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2023 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
#include "job.h"
#include "log.h"
#include "overlaps.h"
+#include "scope_guard.h"
#include "text_content.h"
#include "video_content.h"
#include <dcp/dcp.h>
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<int>(boost::filesystem::status(i.path()).type()));
+ LOG_GENERAL("Ignoring %1 from inside: status is %2", i.path().string(), static_cast<int>(status(i.path()).type()));
}
}
}
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);
for (int i = 0; i < examiner->text_count(TextType::CLOSED_CAPTION); ++i) {
auto c = make_shared<TextContent>(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);
}
* by prepending the reel number. We do the same disambiguation when emitting the
* subtitles in the DCP decoder.
*/
- font->set_id(id_for_font_in_reel(font->id(), reel_number));
- text->add_font(font);
+ auto font_copy = make_shared<dcpomatic::Font>(*font);
+ font_copy->set_id(id_for_font_in_reel(font->id(), reel_number));
+ text->add_font(font_copy);
}
++reel_number;
}