No-op: remove all trailing whitespace.
[dcpomatic.git] / src / lib / playlist.cc
index 41ed00b24d6c06b341a300f40c732b357ca96a1f..c5e026699b476d8864c64f65983f2fa3a7d4d43c 100644 (file)
@@ -40,7 +40,6 @@ using std::vector;
 using std::min;
 using std::max;
 using std::string;
-using std::stringstream;
 using std::pair;
 using boost::optional;
 using boost::shared_ptr;
@@ -63,10 +62,16 @@ Playlist::~Playlist ()
 void
 Playlist::content_changed (weak_ptr<Content> content, int property, bool frequent)
 {
+       /* Don't respond to position changes here, as:
+          - sequencing after earlier/later changes is handled by move_earlier/move_later
+          - any other position changes will be timeline drags which should not result in content
+          being sequenced.
+       */
+
        if (property == ContentProperty::LENGTH || property == VideoContentProperty::VIDEO_FRAME_TYPE) {
                maybe_sequence_video ();
        }
-       
+
        ContentChanged (content, property, frequent);
 }
 
@@ -76,10 +81,9 @@ Playlist::maybe_sequence_video ()
        if (!_sequence_video || _sequencing_video) {
                return;
        }
-       
+
        _sequencing_video = true;
-       
-       ContentList cl = _content;
+
        DCPTime next_left;
        DCPTime next_right;
        for (ContentList::iterator i = _content.begin(); i != _content.end(); ++i) {
@@ -87,7 +91,7 @@ Playlist::maybe_sequence_video ()
                if (!vc) {
                        continue;
                }
-               
+
                if (vc->video_frame_type() == VIDEO_FRAME_TYPE_3D_RIGHT) {
                        vc->set_position (next_right);
                        next_right = vc->end() + DCPTime::delta ();
@@ -98,7 +102,7 @@ Playlist::maybe_sequence_video ()
        }
 
        /* This won't change order, so it does not need a sort */
-       
+
        _sequencing_video = false;
 }
 
@@ -106,7 +110,7 @@ string
 Playlist::video_identifier () const
 {
        string t;
-       
+
        for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i) {
                shared_ptr<const VideoContent> vc = dynamic_pointer_cast<const VideoContent> (*i);
                if (vc) {
@@ -158,7 +162,7 @@ Playlist::remove (shared_ptr<Content> c)
        while (i != _content.end() && *i != c) {
                ++i;
        }
-       
+
        if (i != _content.end ()) {
                _content.erase (i);
                Changed ();
@@ -175,28 +179,15 @@ Playlist::remove (ContentList c)
                while (j != _content.end() && *j != *i) {
                        ++j;
                }
-       
+
                if (j != _content.end ()) {
                        _content.erase (j);
                }
        }
 
        /* This won't change order, so it does not need a sort */
-       
-       Changed ();
-}
 
-bool
-Playlist::has_subtitles () const
-{
-       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()) {
-                       return true;
-               }
-       }
-
-       return false;
+       Changed ();
 }
 
 class FrameRateCandidate
@@ -258,7 +249,7 @@ Playlist::best_dcp_frame_rate () const
        if (!best) {
                return 24;
        }
-       
+
        return best->dcp;
 }
 
@@ -267,7 +258,7 @@ Playlist::length () const
 {
        DCPTime len;
        for (ContentList::const_iterator i = _content.begin(); i != _content.end(); ++i) {
-               len = max (len, (*i)->end() + DCPTime::delta ());
+               len = max (len, (*i)->end());
        }
 
        return len;
@@ -281,7 +272,7 @@ Playlist::reconnect ()
        }
 
        _content_connections.clear ();
-               
+
        for (ContentList::iterator i = _content.begin(); i != _content.end(); ++i) {
                _content_connections.push_back ((*i)->Changed.connect (bind (&Playlist::content_changed, this, _1, _2, _3)));
        }
@@ -358,7 +349,7 @@ Playlist::repeat (ContentList c, int n)
        }
 
        sort (_content.begin(), _content.end(), ContentSorter ());
-       
+
        reconnect ();
        Changed ();
 }
@@ -367,7 +358,7 @@ void
 Playlist::move_earlier (shared_ptr<Content> c)
 {
        sort (_content.begin(), _content.end(), ContentSorter ());
-       
+
        ContentList::iterator previous = _content.end ();
        ContentList::iterator i = _content.begin();
        while (i != _content.end() && *i != c) {
@@ -375,30 +366,29 @@ Playlist::move_earlier (shared_ptr<Content> c)
                ++i;
        }
 
-       assert (i != _content.end ());
+       DCPOMATIC_ASSERT (i != _content.end ());
        if (previous == _content.end ()) {
                return;
        }
-       
+
+
        DCPTime const p = (*previous)->position ();
        (*previous)->set_position (p + c->length_after_trim ());
        c->set_position (p);
        sort (_content.begin(), _content.end(), ContentSorter ());
-       
-       Changed ();
 }
 
 void
 Playlist::move_later (shared_ptr<Content> c)
 {
        sort (_content.begin(), _content.end(), ContentSorter ());
-       
+
        ContentList::iterator i = _content.begin();
        while (i != _content.end() && *i != c) {
                ++i;
        }
 
-       assert (i != _content.end ());
+       DCPOMATIC_ASSERT (i != _content.end ());
 
        ContentList::iterator next = i;
        ++next;
@@ -407,10 +397,7 @@ Playlist::move_later (shared_ptr<Content> c)
                return;
        }
 
-       DCPTime const p = (*next)->position ();
        (*next)->set_position (c->position ());
-       c->set_position (p + c->length_after_trim ());
+       c->set_position (c->position() + (*next)->length_after_trim ());
        sort (_content.begin(), _content.end(), ContentSorter ());
-       
-       Changed ();
 }