summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-02-21 19:19:34 +0000
committerCarl Hetherington <cth@carlh.net>2016-02-21 19:19:34 +0000
commit94fe4f4b6373ca40a4ca5be06a1c8caea5ed76f2 (patch)
tree01f3f7204480ba9379716cbe3929ef4d64036eac
parent2cef28a60af97a7f651c7fa7f9a1adebd6c96d6a (diff)
Don't write duplicate <LoadFont> nodes into subtitle files.
-rw-r--r--ChangeLog4
-rw-r--r--src/lib/writer.cc16
m---------test/data0
-rw-r--r--test/xml_subtitle_test.cc21
4 files changed, 39 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index dc5c28c11..7f16414c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2016-02-21 Carl Hetherington <cth@carlh.net>
+
+ * Fix duplicate <LoadFont> nodes in subtitle files.
+
2016-02-18 c.hetherington <cth@carlh.net>
* Add some more information to the content properties
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index 47c6b8381..ea8a2e89f 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -543,8 +543,20 @@ Writer::write (PlayerSubtitles subs)
void
Writer::write (list<shared_ptr<Font> > fonts)
{
- /* Just keep a list of fonts and we'll deal with them in ::finish */
- copy (fonts.begin (), fonts.end (), back_inserter (_fonts));
+ /* Just keep a list of unique fonts and we'll deal with them in ::finish */
+
+ BOOST_FOREACH (shared_ptr<Font> i, fonts) {
+ bool got = false;
+ BOOST_FOREACH (shared_ptr<Font> j, _fonts) {
+ if (*i == *j) {
+ got = true;
+ }
+ }
+
+ if (!got) {
+ _fonts.push_back (i);
+ }
+ }
}
bool
diff --git a/test/data b/test/data
-Subproject b4b0f4e1ef3e0afac12d82d2c6c04ce39ea2f6f
+Subproject be07663c918efc93e32b6344d533974a16a9b9f
diff --git a/test/xml_subtitle_test.cc b/test/xml_subtitle_test.cc
index 554591b92..4e0dcf8ae 100644
--- a/test/xml_subtitle_test.cc
+++ b/test/xml_subtitle_test.cc
@@ -50,3 +50,24 @@ BOOST_AUTO_TEST_CASE (xml_subtitle_test)
/* Should be blank video with MXF subtitles */
check_dcp ("test/data/xml_subtitle_test", film->dir (film->dcp_name ()));
}
+
+/** Check the subtitle XML when there are two subtitle files in the project */
+BOOST_AUTO_TEST_CASE (xml_subtitle_test2)
+{
+ shared_ptr<Film> film = new_test_film ("xml_subtitle_test2");
+ film->set_container (Ratio::from_id ("185"));
+ film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR"));
+ film->set_name ("frobozz");
+ film->set_interop (true);
+ shared_ptr<TextSubtitleContent> content (new TextSubtitleContent (film, "test/data/subrip2.srt"));
+ content->set_use_subtitles (true);
+ content->set_burn_subtitles (false);
+ film->examine_and_add_content (content);
+ film->examine_and_add_content (content);
+ wait_for_jobs ();
+ film->make_dcp ();
+ wait_for_jobs ();
+ film->write_metadata ();
+
+ check_dcp ("test/data/xml_subtitle_test2", film->dir (film->dcp_name ()));
+}