Fix missing subtitle when a frame is re-fetched.
authorCarl Hetherington <cth@carlh.net>
Wed, 14 Dec 2016 10:54:51 +0000 (10:54 +0000)
committerCarl Hetherington <cth@carlh.net>
Wed, 14 Dec 2016 10:54:51 +0000 (10:54 +0000)
Before this we would get a subtitle at t, which would set the subtitle
decoder position to t.  Then a second request for this sub would result
in no seek but the decoder would not re-produce the sub.

src/lib/subtitle_decoder.cc

index c59406c3659c80659d10b3bd11ce39ec6d77aeab..ff6f4b9daeca44555a49e424f9d5ecc1a495d194 100644 (file)
@@ -80,7 +80,7 @@ SubtitleDecoder::give_text (ContentTimePeriod period, list<dcp::SubtitleString>
        }
 
        _decoded_text.push_back (ContentTextSubtitle (period, s));
-       _position = period.from;
+       _position = period.to;
 }
 
 /** Get the subtitles that correspond to a given list of periods.
@@ -109,7 +109,12 @@ SubtitleDecoder::get (list<T> const & subs, list<ContentTimePeriod> const & sp,
 
        /* Suggest to our parent decoder that it might want to seek if we haven't got what we're being asked for */
        if (missing) {
-               _log->log (String::compose ("SD suggests seek to %1", to_string (*missing)), LogEntry::TYPE_DEBUG_DECODE);
+               _log->log (
+                       String::compose (
+                               "SD suggests seek to %1 from %2",
+                               to_string (*missing),
+                               position() ? to_string(*position()) : "nowhere"),
+                       LogEntry::TYPE_DEBUG_DECODE);
                maybe_seek (*missing, true);
        }