From 6244677a4e92989da3aca309e9eaba0ce420e4a3 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 14 Aug 2013 15:11:30 +0100 Subject: Revert "Protect playlist with a mutex so that we can add content safely from e.g. examine content threads." This reverts commit 853b8641ee7fb8348302c0daae838c4891769b1d. --- src/lib/film.cc | 1 - src/lib/playlist.cc | 113 +++++++++++++++------------------------------------- src/lib/playlist.h | 1 - 3 files changed, 32 insertions(+), 83 deletions(-) (limited to 'src/lib') 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 j, weak_ptr c) } } -/** Thread-safe; handled by playlist */ void Film::add_content (shared_ptr 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, 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 film, shared_ptr node) { - boost::mutex::scoped_lock lm (_mutex); - list > c = node->node_children ("Content"); for (list >::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 film, shared_ptras_xml (node->add_child ("Content")); } @@ -143,35 +135,21 @@ Playlist::as_xml (xmlpp::Node* node) void Playlist::add (shared_ptr c) { - { - boost::mutex::scoped_lock lm (_mutex); - _content.push_back (c); - reconnect (); - } - + _content.push_back (c); + reconnect (); Changed (); } void Playlist::remove (shared_ptr 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 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 fc = dynamic_pointer_cast (*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 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 (*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 a, shared_ptr 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 range (TIME_MAX, 0); + pair 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 copy = (*i)->clone (); - copy->set_position (pos + copy->position() - range.first); - _content.push_back (copy); - } - pos += range.second - range.first; + shared_ptr 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 _content_connections; - mutable boost::mutex _mutex; }; #endif -- cgit v1.2.3