Skip to content

Commit

Permalink
Handle resize better - leave leftmost items be upon resizing
Browse files Browse the repository at this point in the history
  • Loading branch information
JustAMan committed Mar 25, 2020
1 parent cc9575c commit 93f4d0f
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions src/subtitles-octopus.js
Original file line number Diff line number Diff line change
Expand Up @@ -407,22 +407,30 @@ var SubtitlesOctopus = function (options) {

function resetRenderAheadCache(isResizing) {
if (self.renderAhead > 0) {
var newCache = [];
if (isResizing && self.oneshotState.prevHeight && self.oneshotState.prevWidth) {
var timeLimit = 10, sizeLimit = self.renderAhead * 0.3;
if (self.canvas.height >= self.oneshotState.prevHeight * (1.0 - self.resizeVariation) &&
self.canvas.height <= self.oneshotState.prevHeight * (1.0 + self.resizeVariation) &&
self.canvas.width >= self.oneshotState.prevWidth * (1.0 - self.resizeVariation) &&
self.canvas.width <= self.oneshotState.prevWidth * (1.0 + self.resizeVariation)) {
console.debug('not resetting prerender cache - keep using current');
// keep rendering canvas size the same,
// otherwise subtitles got placed incorrectly
self.canvas.width = self.oneshotState.prevWidth;
self.canvas.height = self.oneshotState.prevHeight;
return;
console.debug('viewport changes are small, leaving more of prerendered buffer');
timeLimit = 30;
sizeLimit = self.renderAhead * 0.5;
}
var stopTime = self.video.currentTime + self.timeOffset + timeLimit;
var size = 0;
for (var i = 0; i < self.renderedItems.length; i++) {
var item = self.renderedItems[i];
if (item.emptyFinish < 0 || item.emptyFinish >= stopTime) break;
size += item.size;
if (size >= sizeLimit) break;
newCache.push(item);
}
}

console.info('resetting prerender cache');
self.renderedItems = [];
self.renderedItems = newCache;
self.oneshotState.eventStart = null;
self.oneshotState.iteration++;
self.oneshotState.renderRequested = false;
Expand Down

0 comments on commit 93f4d0f

Please sign in to comment.