Skip to content

Commit

Permalink
Merge pull request #35 from dmitrylyzo/oneshot-restart
Browse files Browse the repository at this point in the history
Fix RenderAhead buffering after resize
  • Loading branch information
dmitrylyzo authored May 15, 2022
2 parents ddb93df + d2880e1 commit ee4f565
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/subtitles-octopus.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ var SubtitlesOctopus = function (options) {
renderRequested: false,
requestNextTimestamp: -1,
nextRequestOffset: 0, // Next request offset, s
restart: true,
prevWidth: null,
prevHeight: null
}
Expand Down Expand Up @@ -467,9 +468,12 @@ var SubtitlesOctopus = function (options) {

var freed = !self.video.paused && _cleanPastRendered(currentTime);

if ((freed || !eventToShow) && nextTime >= 0 && Math.abs(self.oneshotState.requestNextTimestamp - nextTime) > EVENTTIME_ULP) {
if ((freed || !eventToShow || self.oneshotState.restart)
&& nextTime >= 0 && Math.abs(self.oneshotState.requestNextTimestamp - nextTime) > EVENTTIME_ULP) {
tryRequestOneshot(nextTime, nextTime === finishTime ? animated : true);
}

self.oneshotState.restart = false;
}

function stopOneshotRender() {
Expand Down Expand Up @@ -512,6 +516,12 @@ var SubtitlesOctopus = function (options) {
self.oneshotState.prevWidth = targetWidth;
self.oneshotState.nextRequestOffset = 0;

// After resetting, the next `tryRequestOneshot` may be "eaten" by
// an already existing (in the cache) event, and it won't be called
// in `oneshotRender` either, since the cache won't be freed there
// (it was reset here).
self.oneshotState.restart = true;

if (!isResizing) {
self.oneshotState.displayedEvent = null;
}
Expand Down

0 comments on commit ee4f565

Please sign in to comment.