summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/player.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 7ede96a0d..3de26ec90 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -913,9 +913,18 @@ Player::seek (DCPTime time, bool accurate)
_active_subtitles.clear ();
BOOST_FOREACH (shared_ptr<Piece> i, _pieces) {
- i->done = false;
- DCPTime const t = min(max(time, i->content->position()), i->content->end());
- i->decoder->seek (dcp_to_content_time (i, t), accurate);
+ if (time < i->content->position()) {
+ /* Before; seek to 0 */
+ i->decoder->seek (ContentTime(), accurate);
+ i->done = false;
+ } else if (i->content->position() <= time && time < i->content->end()) {
+ /* During; seek to position */
+ i->decoder->seek (dcp_to_content_time (i, time), accurate);
+ i->done = false;
+ } else {
+ /* After; this piece is done */
+ i->done = true;
+ }
}
if (accurate) {