Skip to content

Commit

Permalink
Fix prerender cache not clearing upon track switch
Browse files Browse the repository at this point in the history
Also prepare to handle resize more gracefully
  • Loading branch information
JustAMan committed Mar 25, 2020
1 parent 42c3b62 commit cc9575c
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
4 changes: 4 additions & 0 deletions src/post-worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,10 @@ self.oneshotRender = function (lastRenderedTime, renderNow, iteration) {
eventFinish: eventFinish,
emptyFinish: emptyFinish,
animated: animated,
viewport: {
width: self.width,
height: self.height
},
spentTime: rendered.spentTime || 0,
blendTime: rendered.blendTime || 0,
canvases: rendered.canvases || []
Expand Down
18 changes: 12 additions & 6 deletions src/subtitles-octopus.js
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,10 @@ var SubtitlesOctopus = function (options) {
self.oneshotState.eventOver = eventOver;

var beforeDrawTime = performance.now();
if (event.viewport.width != self.canvas.width || event.viewport.height != self.canvas.height) {
self.canvas.width = event.viewport.width;
self.canvas.height = event.viewport.height;
}
self.ctx.clearRect(0, 0, self.canvas.width, self.canvas.height);
if (!eventOver) {
for (var i = 0; i < event.items.length; i++) {
Expand Down Expand Up @@ -401,9 +405,9 @@ var SubtitlesOctopus = function (options) {
}
}

function resetRenderAheadCache() {
function resetRenderAheadCache(isResizing) {
if (self.renderAhead > 0) {
if (self.oneshotState.prevHeight && self.oneshotState.prevWidth) {
if (isResizing && self.oneshotState.prevHeight && self.oneshotState.prevWidth) {
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) &&
Expand Down Expand Up @@ -575,6 +579,7 @@ var SubtitlesOctopus = function (options) {
eventStart: data.lastRenderedTime,
eventFinish: data.lastRenderedTime - 0.001,
emptyFinish: data.eventStart,
viewport: data.viewport,
spentTime: 0,
blendTime: 0,
items: [],
Expand Down Expand Up @@ -610,6 +615,7 @@ var SubtitlesOctopus = function (options) {
emptyFinish: data.emptyFinish,
spentTime: data.spentTime,
blendTime: data.blendTime,
viewport: data.viewport,
items: items,
animated: data.animated,
size: size
Expand Down Expand Up @@ -753,7 +759,7 @@ var SubtitlesOctopus = function (options) {
width: self.canvas.width,
height: self.canvas.height
});
resetRenderAheadCache();
resetRenderAheadCache(true);
}
};

Expand Down Expand Up @@ -789,22 +795,22 @@ var SubtitlesOctopus = function (options) {
target: 'set-track-by-url',
url: url
});
resetRenderAheadCache();
resetRenderAheadCache(false);
};

self.setTrack = function (content) {
self.worker.postMessage({
target: 'set-track',
content: content
});
resetRenderAheadCache();
resetRenderAheadCache(false);
};

self.freeTrack = function (content) {
self.worker.postMessage({
target: 'free-track'
});
resetRenderAheadCache();
resetRenderAheadCache(false);
};


Expand Down

0 comments on commit cc9575c

Please sign in to comment.