@@ -46,7 +46,9 @@ var SubtitlesOctopus = function (options) {
4646 eventOver : false ,
4747 iteration : 0 ,
4848 renderRequested : false ,
49- requestNextTimestamp : - 1
49+ requestNextTimestamp : - 1 ,
50+ prevWidth : null ,
51+ prevHeight : null
5052 }
5153
5254 self . hasAlphaBug = false ;
@@ -391,11 +393,27 @@ var SubtitlesOctopus = function (options) {
391393
392394 function resetRenderAheadCache ( ) {
393395 if ( self . renderAhead > 0 ) {
396+ if ( self . oneshotState . prevHeight && self . oneshotState . prevWidth ) {
397+ if ( self . canvas . height >= self . oneshotState . prevHeight * 0.8 &&
398+ self . canvas . height <= self . oneshotState . prevHeight * 1.2 &&
399+ self . canvas . width >= self . oneshotState . prevWidth * 0.8 &&
400+ self . canvas . width <= self . oneshotState . prevWidth * 1.2 ) {
401+ console . debug ( 'not resetting prerender cache - keep using current' ) ;
402+ // keep rendering canvas size the same,
403+ // otherwise subtitles got placed incorrectly
404+ self . canvas . width = self . oneshotState . prevWidth ;
405+ self . canvas . height = self . oneshotState . prevHeight ;
406+ return ;
407+ }
408+ }
409+
394410 console . info ( 'resetting prerender cache' ) ;
395411 self . renderedItems = [ ] ;
396412 self . oneshotState . eventStart = null ;
397413 self . oneshotState . iteration ++ ;
398414 self . oneshotState . renderRequested = false ;
415+ self . oneshotState . prevHeight = self . canvas . height ;
416+ self . oneshotState . prevWidth = self . canvas . width ;
399417
400418 window . requestAnimationFrame ( oneshotRender ) ;
401419 tryRequestOneshot ( undefined , true ) ;
0 commit comments