Revert "Fix timer leak after multiple Viewer.open() calls"

This should be done with cancelAnimationFrame() instead.

This reverts commit 47aba609403d090b04b144b1e0097e0ea969f7a8.
This commit is contained in:
Benjamin Gilbert 2013-04-26 21:48:48 -04:00
parent 47aba60940
commit 23c20e3d5a

View File

@ -115,7 +115,6 @@ $.Viewer = function( options ) {
THIS[ this.hash ] = { THIS[ this.hash ] = {
"fsBoundsDelta": new $.Point( 1, 1 ), "fsBoundsDelta": new $.Point( 1, 1 ),
"prevContainerSize": null, "prevContainerSize": null,
"closeCount": 0,
"animating": false, "animating": false,
"forceRedraw": false, "forceRedraw": false,
"mouseInside": false, "mouseInside": false,
@ -369,8 +368,6 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
VIEWERS[ this.hash ] = null; VIEWERS[ this.hash ] = null;
delete VIEWERS[ this.hash ]; delete VIEWERS[ this.hash ];
THIS[ this.hash ].closeCount++;
this.raiseEvent( 'close', { viewer: this } ); this.raiseEvent( 'close', { viewer: this } );
return this; return this;
@ -951,7 +948,6 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype,
function openTileSource( viewer, source ) { function openTileSource( viewer, source ) {
var _this = viewer, var _this = viewer,
overlay, overlay,
closeCount,
i; i;
if ( _this.source ) { if ( _this.source ) {
@ -1068,12 +1064,7 @@ function openTileSource( viewer, source ) {
THIS[ _this.hash ].animating = false; THIS[ _this.hash ].animating = false;
THIS[ _this.hash ].forceRedraw = true; THIS[ _this.hash ].forceRedraw = true;
scheduleUpdate( _this, updateMulti );
// Use local copy in closure
closeCount = THIS[ _this.hash ].closeCount;
scheduleUpdate( _this, function(){
updateMulti( _this, closeCount );
} );
//Assuming you had programatically created a bunch of overlays //Assuming you had programatically created a bunch of overlays
//and added them via configuration //and added them via configuration
@ -1130,7 +1121,9 @@ function scheduleUpdate( viewer, updateFunc, prevUpdateTime ){
deltaTime; deltaTime;
if ( THIS[ viewer.hash ].animating ) { if ( THIS[ viewer.hash ].animating ) {
return $.requestAnimationFrame( updateFunc ); return $.requestAnimationFrame( function(){
updateFunc( viewer );
} );
} }
currentTime = +new Date(); currentTime = +new Date();
@ -1139,7 +1132,9 @@ function scheduleUpdate( viewer, updateFunc, prevUpdateTime ){
targetTime = prevUpdateTime + 1000 / 60; targetTime = prevUpdateTime + 1000 / 60;
deltaTime = Math.max( 1, targetTime - currentTime ); deltaTime = Math.max( 1, targetTime - currentTime );
return $.requestAnimationFrame( updateFunc ); return $.requestAnimationFrame( function(){
updateFunc( viewer );
} );
} }
@ -1339,19 +1334,17 @@ function onContainerEnter( tracker, position, buttonDownElement, buttonDownAny )
// Page update routines ( aka Views - for future reference ) // Page update routines ( aka Views - for future reference )
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
function updateMulti( viewer, closeCount ) { function updateMulti( viewer ) {
var beginTime; var beginTime;
if ( closeCount !== THIS[ viewer.hash ].closeCount ) { if ( !viewer.source ) {
return; return;
} }
beginTime = +new Date(); beginTime = +new Date();
updateOnce( viewer ); updateOnce( viewer );
scheduleUpdate( viewer, function(){ scheduleUpdate( viewer, arguments.callee, beginTime );
updateMulti( viewer, closeCount );
}, beginTime );
} }
function updateOnce( viewer ) { function updateOnce( viewer ) {