Normalise XML attribute names to be camelCase (#2241).
[dcpomatic.git] / src / lib / text_content.cc
index e91b7bcc039c7e8344414455a14883dd0a55301c..d4468f7e5eb4a3fc4e1baaf9dc685b3ebbdb9b75 100644 (file)
@@ -236,8 +236,11 @@ TextContent::TextContent (Content* parent, cxml::ConstNodePtr node, int version,
        if (lang) {
                try {
                        _language = dcp::LanguageTag(lang->content());
-                       auto add = lang->optional_bool_attribute("Additional");
-                       _language_is_additional = add && *add;
+                       auto additional = lang->optional_bool_attribute("Additional");
+                       if (!additional) {
+                               additional = lang->optional_bool_attribute("additional");
+                       }
+                       _language_is_additional = additional.get_value_or(false);
                } catch (dcp::LanguageTagError&) {
                        /* The language tag can be empty or invalid if it was loaded from a
                         * 2.14.x metadata file; we'll just ignore it in that case.
@@ -410,7 +413,7 @@ TextContent::as_xml (xmlpp::Node* root) const
        if (_language) {
                auto lang = text->add_child("Language");
                lang->add_child_text (_language->to_string());
-               lang->set_attribute ("Additional", _language_is_additional ? "1" : "0");
+               lang->set_attribute("additional", _language_is_additional ? "1" : "0");
        }
 }
 
@@ -445,7 +448,9 @@ TextContent::identifier () const
 void
 TextContent::add_font (shared_ptr<Font> font)
 {
-       DCPOMATIC_ASSERT(!get_font(font->id()));
+       boost::mutex::scoped_lock lm(_mutex);
+
+       DCPOMATIC_ASSERT(!get_font_unlocked(font->id()));
        _fonts.push_back (font);
        connect_to_fonts ();
 }
@@ -652,6 +657,14 @@ TextContent::take_settings_from (shared_ptr<const TextContent> c)
 
 shared_ptr<dcpomatic::Font>
 TextContent::get_font(string id) const
+{
+       boost::mutex::scoped_lock lm(_mutex);
+       return get_font_unlocked(id);
+}
+
+
+shared_ptr<dcpomatic::Font>
+TextContent::get_font_unlocked(string id) const
 {
        auto iter = std::find_if(_fonts.begin(), _fonts.end(), [&id](shared_ptr<dcpomatic::Font> font) {
                return font->id() == id;
@@ -668,6 +681,8 @@ TextContent::get_font(string id) const
 void
 TextContent::clear_fonts()
 {
+       boost::mutex::scoped_lock lm(_mutex);
+
        _fonts.clear();
 }