From 7d9018b245140d2533891d90b84b143a3fcde26c Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 4 May 2021 22:14:26 +0200 Subject: [PATCH] Remove Piece::_done in favour of a method. --- src/lib/piece.cc | 28 ++++++++++++++-------------- src/lib/piece.h | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/lib/piece.cc b/src/lib/piece.cc index 452b34222..12b62e824 100644 --- a/src/lib/piece.cc +++ b/src/lib/piece.cc @@ -168,7 +168,7 @@ Piece::atmos (shared_ptr data, Frame frame, AtmosMetadata void Piece::update_pull_to (DCPTime& pull_to) const { - if (_done) { + if (done()) { return; } @@ -325,7 +325,7 @@ void Piece::pass () { LOG_DEBUG_PLAYER ("Calling pass() on %1", _content->path(0)); - _done = _decoder->pass(); + _decoder->pass(); } @@ -356,14 +356,9 @@ Piece::seek (DCPTime time, bool accurate) been trimmed to a point between keyframes, or something). */ _decoder->seek (dcp_to_content_time(position()), true); - _done = false; } else if (position() <= time && time < end()) { /* During; seek to position */ _decoder->seek (dcp_to_content_time(time), accurate); - _done = false; - } else { - /* After; this piece is done */ - _done = true; } } @@ -371,16 +366,10 @@ Piece::seek (DCPTime time, bool accurate) optional Piece::decoder_before(optional time) { - if (_done) { - return {}; - } - auto t = content_time_to_dcp(_content, std::max(_decoder->position(), _content->trim_start())); DCPOMATIC_ASSERT (t); - if (*t > end()) { - _done = true; - } else { + if (*t < end()) { /* Given two choices at the same time, pick the one with texts so we see it before the video. */ @@ -392,6 +381,7 @@ Piece::decoder_before(optional time) return {}; } + vector Piece::fonts () const { @@ -424,3 +414,13 @@ Piece::flush () } } } + + +bool +Piece::done () const +{ + auto film = _film.lock(); + DCPOMATIC_ASSERT (film); + return content_time_to_dcp(_content, std::max(_decoder->position(), _content->trim_start())) > _content->end(film); +} + diff --git a/src/lib/piece.h b/src/lib/piece.h index 2586bb1d0..37336afcb 100644 --- a/src/lib/piece.h +++ b/src/lib/piece.h @@ -107,13 +107,13 @@ private: void atmos (std::shared_ptr data, Frame frame, AtmosMetadata metadata); void flush (); + bool done () const; std::weak_ptr _film; std::shared_ptr _content; std::shared_ptr _decoder; FrameRateChange _frc; bool _fast = false; - bool _done = false; boost::optional _ignore_video; std::map _stream_last_push_end; -- 2.30.2