list<PlayerText>
ActiveText::get (DCPTimePeriod period) const
{
+ boost::mutex::scoped_lock lm (_mutex);
+
list<PlayerText> ps;
for (Map::const_iterator i = _data.begin(); i != _data.end(); ++i) {
list<PlayerText>
ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const
{
+ boost::mutex::scoped_lock lm (_mutex);
+
list<PlayerText> ps;
for (Map::const_iterator i = _data.begin(); i != _data.end(); ++i) {
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<Period> as;
void
ActiveText::add_from (weak_ptr<const TextContent> content, PlayerText ps, DCPTime from)
{
+ boost::mutex::scoped_lock lm (_mutex);
+
if (_data.find(content) == _data.end()) {
_data[content] = list<Period>();
}
pair<PlayerText, DCPTime>
ActiveText::add_to (weak_ptr<const TextContent> content, DCPTime to)
{
+ boost::mutex::scoped_lock lm (_mutex);
+
DCPOMATIC_ASSERT (_data.find(content) != _data.end());
_data[content].back().to = to;
bool
ActiveText::have (weak_ptr<const TextContent> content) const
{
+ boost::mutex::scoped_lock lm (_mutex);
+
Map::const_iterator i = _data.find(content);
if (i == _data.end()) {
return false;
void
ActiveText::clear ()
{
+ boost::mutex::scoped_lock lm (_mutex);
_data.clear ();
}
#include "dcpomatic_time.h"
#include "player_text.h"
#include <boost/noncopyable.hpp>
+#include <boost/thread/mutex.hpp>
#include <list>
#include <map>
void add (DCPTimePeriod period, std::list<PlayerText>& pc, std::list<Period> p) const;
+ mutable boost::mutex _mutex;
Map _data;
};