From c380909d3dcac0809dbeedc6240c33d37118296d Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 25 Jul 2018 23:50:30 +0100 Subject: [PATCH] Add believed-necessary locking to ActiveText. --- src/lib/active_text.cc | 13 +++++++++++++ src/lib/active_text.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/src/lib/active_text.cc b/src/lib/active_text.cc index de3dc8165..6e813144c 100644 --- a/src/lib/active_text.cc +++ b/src/lib/active_text.cc @@ -45,6 +45,8 @@ ActiveText::add (DCPTimePeriod period, list& pc, list p) con list ActiveText::get (DCPTimePeriod period) const { + boost::mutex::scoped_lock lm (_mutex); + list ps; for (Map::const_iterator i = _data.begin(); i != _data.end(); ++i) { @@ -67,6 +69,8 @@ ActiveText::get (DCPTimePeriod period) const list ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const { + boost::mutex::scoped_lock lm (_mutex); + list ps; for (Map::const_iterator i = _data.begin(); i != _data.end(); ++i) { @@ -93,6 +97,8 @@ ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const void ActiveText::clear_before (DCPTime time) { + boost::mutex::scoped_lock lm (_mutex); + Map updated; for (Map::const_iterator i = _data.begin(); i != _data.end(); ++i) { list as; @@ -116,6 +122,8 @@ ActiveText::clear_before (DCPTime time) void ActiveText::add_from (weak_ptr content, PlayerText ps, DCPTime from) { + boost::mutex::scoped_lock lm (_mutex); + if (_data.find(content) == _data.end()) { _data[content] = list(); } @@ -130,6 +138,8 @@ ActiveText::add_from (weak_ptr content, PlayerText ps, DCPTim pair ActiveText::add_to (weak_ptr content, DCPTime to) { + boost::mutex::scoped_lock lm (_mutex); + DCPOMATIC_ASSERT (_data.find(content) != _data.end()); _data[content].back().to = to; @@ -147,6 +157,8 @@ ActiveText::add_to (weak_ptr content, DCPTime to) bool ActiveText::have (weak_ptr content) const { + boost::mutex::scoped_lock lm (_mutex); + Map::const_iterator i = _data.find(content); if (i == _data.end()) { return false; @@ -158,5 +170,6 @@ ActiveText::have (weak_ptr content) const void ActiveText::clear () { + boost::mutex::scoped_lock lm (_mutex); _data.clear (); } diff --git a/src/lib/active_text.h b/src/lib/active_text.h index 10ce30f08..1dab7a867 100644 --- a/src/lib/active_text.h +++ b/src/lib/active_text.h @@ -25,6 +25,7 @@ #include "dcpomatic_time.h" #include "player_text.h" #include +#include #include #include @@ -64,5 +65,6 @@ private: void add (DCPTimePeriod period, std::list& pc, std::list p) const; + mutable boost::mutex _mutex; Map _data; }; -- 2.30.2