Cleanup: remove unnecessary explicit.
[dcpomatic.git] / src / lib / dcp_content.cc
index 231a93bd0bec27c37574b785428ca792a185ffbb..e7bef573b172dcbf7e9e6278541bd9457b8ba46e 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    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.
 
@@ -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 <dcp/dcp.h>
@@ -213,6 +214,11 @@ DCPContent::examine (shared_ptr<const Film> film, shared_ptr<Job> 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 +276,7 @@ DCPContent::examine (shared_ptr<const Film> film, shared_ptr<Job> job)
        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);
        }
 
@@ -825,8 +832,9 @@ add_fonts_from_examiner(shared_ptr<TextContent> text, vector<vector<shared_ptr<F
                         * 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;
        }