Skip to content

Commit cc9575c

Browse files
committed
Fix prerender cache not clearing upon track switch
Also prepare to handle resize more gracefully
1 parent 42c3b62 commit cc9575c

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/post-worker.js

+4
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,10 @@ self.oneshotRender = function (lastRenderedTime, renderNow, iteration) {
270270
eventFinish: eventFinish,
271271
emptyFinish: emptyFinish,
272272
animated: animated,
273+
viewport: {
274+
width: self.width,
275+
height: self.height
276+
},
273277
spentTime: rendered.spentTime || 0,
274278
blendTime: rendered.blendTime || 0,
275279
canvases: rendered.canvases || []

src/subtitles-octopus.js

+12-6
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,10 @@ var SubtitlesOctopus = function (options) {
351351
self.oneshotState.eventOver = eventOver;
352352

353353
var beforeDrawTime = performance.now();
354+
if (event.viewport.width != self.canvas.width || event.viewport.height != self.canvas.height) {
355+
self.canvas.width = event.viewport.width;
356+
self.canvas.height = event.viewport.height;
357+
}
354358
self.ctx.clearRect(0, 0, self.canvas.width, self.canvas.height);
355359
if (!eventOver) {
356360
for (var i = 0; i < event.items.length; i++) {
@@ -401,9 +405,9 @@ var SubtitlesOctopus = function (options) {
401405
}
402406
}
403407

404-
function resetRenderAheadCache() {
408+
function resetRenderAheadCache(isResizing) {
405409
if (self.renderAhead > 0) {
406-
if (self.oneshotState.prevHeight && self.oneshotState.prevWidth) {
410+
if (isResizing && self.oneshotState.prevHeight && self.oneshotState.prevWidth) {
407411
if (self.canvas.height >= self.oneshotState.prevHeight * (1.0 - self.resizeVariation) &&
408412
self.canvas.height <= self.oneshotState.prevHeight * (1.0 + self.resizeVariation) &&
409413
self.canvas.width >= self.oneshotState.prevWidth * (1.0 - self.resizeVariation) &&
@@ -575,6 +579,7 @@ var SubtitlesOctopus = function (options) {
575579
eventStart: data.lastRenderedTime,
576580
eventFinish: data.lastRenderedTime - 0.001,
577581
emptyFinish: data.eventStart,
582+
viewport: data.viewport,
578583
spentTime: 0,
579584
blendTime: 0,
580585
items: [],
@@ -610,6 +615,7 @@ var SubtitlesOctopus = function (options) {
610615
emptyFinish: data.emptyFinish,
611616
spentTime: data.spentTime,
612617
blendTime: data.blendTime,
618+
viewport: data.viewport,
613619
items: items,
614620
animated: data.animated,
615621
size: size
@@ -753,7 +759,7 @@ var SubtitlesOctopus = function (options) {
753759
width: self.canvas.width,
754760
height: self.canvas.height
755761
});
756-
resetRenderAheadCache();
762+
resetRenderAheadCache(true);
757763
}
758764
};
759765

@@ -789,22 +795,22 @@ var SubtitlesOctopus = function (options) {
789795
target: 'set-track-by-url',
790796
url: url
791797
});
792-
resetRenderAheadCache();
798+
resetRenderAheadCache(false);
793799
};
794800

795801
self.setTrack = function (content) {
796802
self.worker.postMessage({
797803
target: 'set-track',
798804
content: content
799805
});
800-
resetRenderAheadCache();
806+
resetRenderAheadCache(false);
801807
};
802808

803809
self.freeTrack = function (content) {
804810
self.worker.postMessage({
805811
target: 'free-track'
806812
});
807-
resetRenderAheadCache();
813+
resetRenderAheadCache(false);
808814
};
809815

810816

0 commit comments

Comments
 (0)