diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-08-14 15:11:30 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-08-14 15:11:30 +0100 |
| commit | 6244677a4e92989da3aca309e9eaba0ce420e4a3 (patch) | |
| tree | a5a976d5e66ddff26432a18bf2482f4f92e75631 /src | |
| parent | 853b8641ee7fb8348302c0daae838c4891769b1d (diff) | |
Revert "Protect playlist with a mutex so that we can add content safely from e.g. examine content threads."
This reverts commit 853b8641ee7fb8348302c0daae838c4891769b1d.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/film.cc | 1 | ||||
| -rw-r--r-- | src/lib/playlist.cc | 113 | ||||
| -rw-r--r-- | src/lib/playlist.h | 1 |
3 files changed, 32 insertions, 83 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index d5ce7fd0c..2f7e07873 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -801,7 +801,6 @@ Film::maybe_add_content (weak_ptr<Job> j, weak_ptr<Content> c) } } -/** Thread-safe; handled by playlist */ void Film::add_content (shared_ptr<Content> c) { diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc index 8952f00be..de48ff5f5 100644 --- a/src/lib/playlist.cc +++ b/src/lib/playlist.cc @@ -75,8 +75,6 @@ Playlist::content_changed (weak_ptr<Content> content, int property, bool frequen void Playlist::maybe_sequence_video () { - boost::mutex::scoped_lock lm (_mutex); - if (!_sequence_video || _sequencing_video) { return; } @@ -101,8 +99,6 @@ Playlist::maybe_sequence_video () string Playlist::video_identifier () const { - boost::mutex::scoped_lock lm (_mutex); - string t; for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i) { @@ -119,8 +115,6 @@ Playlist::video_identifier () const void Playlist::set_from_xml (shared_ptr<const Film> film, shared_ptr<const cxml::Node> node) { - boost::mutex::scoped_lock lm (_mutex); - list<shared_ptr<cxml::Node> > c = node->node_children ("Content"); for (list<shared_ptr<cxml::Node> >::iterator i = c.begin(); i != c.end(); ++i) { _content.push_back (content_factory (film, *i)); @@ -133,8 +127,6 @@ Playlist::set_from_xml (shared_ptr<const Film> film, shared_ptr<const cxml::Node void Playlist::as_xml (xmlpp::Node* node) { - boost::mutex::scoped_lock lm (_mutex); - for (ContentList::iterator i = _content.begin(); i != _content.end(); ++i) { (*i)->as_xml (node->add_child ("Content")); } @@ -143,35 +135,21 @@ Playlist::as_xml (xmlpp::Node* node) void Playlist::add (shared_ptr<Content> c) { - { - boost::mutex::scoped_lock lm (_mutex); - _content.push_back (c); - reconnect (); - } - + _content.push_back (c); + reconnect (); Changed (); } void Playlist::remove (shared_ptr<Content> c) { - bool changed = false; - - { - boost::mutex::scoped_lock lm (_mutex); - ContentList::iterator i = _content.begin (); - while (i != _content.end() && *i != c) { - ++i; - } - - if (i != _content.end ()) { - _content.erase (i); - reconnect (); - changed = true; - } + ContentList::iterator i = _content.begin (); + while (i != _content.end() && *i != c) { + ++i; } - - if (changed) { + + if (i != _content.end ()) { + _content.erase (i); Changed (); } } @@ -179,37 +157,23 @@ Playlist::remove (shared_ptr<Content> c) void Playlist::remove (ContentList c) { - bool changed = false; - - { - boost::mutex::scoped_lock lm (_mutex); - for (ContentList::iterator i = c.begin(); i != c.end(); ++i) { - ContentList::iterator j = _content.begin (); - while (j != _content.end() && *j != *i) { - ++j; - } - - if (j != _content.end ()) { - _content.erase (j); - changed = true; - } + for (ContentList::iterator i = c.begin(); i != c.end(); ++i) { + ContentList::iterator j = _content.begin (); + while (j != _content.end() && *j != *i) { + ++j; } - - if (changed) { - reconnect (); + + if (j != _content.end ()) { + _content.erase (j); } } - if (changed) { - Changed (); - } + Changed (); } bool Playlist::has_subtitles () const { - boost::mutex::scoped_lock lm (_mutex); - for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i) { shared_ptr<const FFmpegContent> fc = dynamic_pointer_cast<FFmpegContent> (*i); if (fc && !fc->subtitle_streams().empty()) { @@ -235,8 +199,6 @@ public: int Playlist::best_dcp_frame_rate () const { - boost::mutex::scoped_lock lm (_mutex); - list<int> const allowed_dcp_frame_rates = Config::instance()->allowed_dcp_frame_rates (); /* Work out what rates we could manage, including those achieved by using skip / repeat. */ @@ -288,8 +250,6 @@ Playlist::best_dcp_frame_rate () const Time Playlist::length () const { - boost::mutex::scoped_lock lm (_mutex); - Time len = 0; for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i) { len = max (len, (*i)->end ()); @@ -298,7 +258,6 @@ Playlist::length () const return len; } -/* Caller must hold a lock on _mutex */ void Playlist::reconnect () { @@ -316,8 +275,6 @@ Playlist::reconnect () Time Playlist::video_end () const { - boost::mutex::scoped_lock lm (_mutex); - Time end = 0; for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i) { if (dynamic_pointer_cast<const VideoContent> (*i)) { @@ -331,7 +288,6 @@ Playlist::video_end () const void Playlist::set_sequence_video (bool s) { - boost::mutex::scoped_lock lm (_mutex); _sequence_video = s; } @@ -345,35 +301,30 @@ ContentSorter::operator() (shared_ptr<Content> a, shared_ptr<Content> b) ContentList Playlist::content () const { - boost::mutex::scoped_lock lm (_mutex); return _content; } void Playlist::repeat (ContentList c, int n) { - { - boost::mutex::scoped_lock lm (_mutex); - pair<Time, Time> range (TIME_MAX, 0); + pair<Time, Time> range (TIME_MAX, 0); + for (ContentList::iterator i = c.begin(); i != c.end(); ++i) { + range.first = min (range.first, (*i)->position ()); + range.second = max (range.second, (*i)->position ()); + range.first = min (range.first, (*i)->end ()); + range.second = max (range.second, (*i)->end ()); + } + + Time pos = range.second; + for (int i = 0; i < n; ++i) { for (ContentList::iterator i = c.begin(); i != c.end(); ++i) { - range.first = min (range.first, (*i)->position ()); - range.second = max (range.second, (*i)->position ()); - range.first = min (range.first, (*i)->end ()); - range.second = max (range.second, (*i)->end ()); - } - - Time pos = range.second; - for (int i = 0; i < n; ++i) { - for (ContentList::iterator i = c.begin(); i != c.end(); ++i) { - shared_ptr<Content> copy = (*i)->clone (); - copy->set_position (pos + copy->position() - range.first); - _content.push_back (copy); - } - pos += range.second - range.first; + shared_ptr<Content> copy = (*i)->clone (); + copy->set_position (pos + copy->position() - range.first); + _content.push_back (copy); } - - reconnect (); + pos += range.second - range.first; } - + + reconnect (); Changed (); } diff --git a/src/lib/playlist.h b/src/lib/playlist.h index cd902d223..7dbf41604 100644 --- a/src/lib/playlist.h +++ b/src/lib/playlist.h @@ -90,7 +90,6 @@ private: bool _sequence_video; bool _sequencing_video; std::list<boost::signals2::connection> _content_connections; - mutable boost::mutex _mutex; }; #endif |
