diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-02-21 19:19:34 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-02-21 19:19:34 +0000 |
| commit | 94fe4f4b6373ca40a4ca5be06a1c8caea5ed76f2 (patch) | |
| tree | 01f3f7204480ba9379716cbe3929ef4d64036eac | |
| parent | 2cef28a60af97a7f651c7fa7f9a1adebd6c96d6a (diff) | |
Don't write duplicate <LoadFont> nodes into subtitle files.
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | src/lib/writer.cc | 16 | ||||
| m--------- | test/data | 0 | ||||
| -rw-r--r-- | test/xml_subtitle_test.cc | 21 |
4 files changed, 39 insertions, 2 deletions
@@ -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 ())); +} |
