mirror of
https://github.com/openseadragon/openseadragon.git
synced 2024-11-22 05:06:09 +03:00
fix .close() called after .destroy() + spacing
This commit is contained in:
parent
764fa3e34a
commit
a563bdb658
@ -303,21 +303,22 @@ $.Drawer.prototype = /** @lends OpenSeadragon.Drawer.prototype */{
|
|||||||
canRotate: function() {
|
canRotate: function() {
|
||||||
return this.useCanvas;
|
return this.useCanvas;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroy the drawer (unload current loaded tiles)
|
* Destroy the drawer (unload current loaded tiles)
|
||||||
*/
|
* @method
|
||||||
destroy: function() {
|
* @return null
|
||||||
|
*/
|
||||||
//unload current loaded tiles (=empty TILE_CACHE)
|
destroy: function() {
|
||||||
for (var i=0; i<this.tilesLoaded.length; ++i) {
|
//unload current loaded tiles (=empty TILE_CACHE)
|
||||||
this.tilesLoaded[i].unload();
|
for ( var i = 0; i < this.tilesLoaded.length; ++i ) {
|
||||||
}
|
this.tilesLoaded[i].unload();
|
||||||
|
}
|
||||||
//force unloading of current canvas (1x1 will be gc later, trick not necessary needed)
|
|
||||||
this.canvas.width = 1;
|
//force unloading of current canvas (1x1 will be gc later, trick not necessarily needed)
|
||||||
this.canvas.height = 1;
|
this.canvas.width = 1;
|
||||||
}
|
this.canvas.height = 1;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -252,9 +252,9 @@
|
|||||||
destroy: function () {
|
destroy: function () {
|
||||||
stopTracking( this );
|
stopTracking( this );
|
||||||
this.element = null;
|
this.element = null;
|
||||||
|
|
||||||
THIS[ this.hash ] = null;
|
THIS[ this.hash ] = null;
|
||||||
delete THIS[ this.hash ];
|
delete THIS[ this.hash ];
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -529,6 +529,12 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype,
|
|||||||
* @fires OpenSeadragon.Viewer.event:close
|
* @fires OpenSeadragon.Viewer.event:close
|
||||||
*/
|
*/
|
||||||
close: function ( ) {
|
close: function ( ) {
|
||||||
|
|
||||||
|
if ( !THIS[ this.hash ] ) {
|
||||||
|
//this viewer has already been destroyed: returning immediately
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
if ( this._updateRequestId !== null ) {
|
if ( this._updateRequestId !== null ) {
|
||||||
$.cancelAnimationFrame( this._updateRequestId );
|
$.cancelAnimationFrame( this._updateRequestId );
|
||||||
this._updateRequestId = null;
|
this._updateRequestId = null;
|
||||||
@ -542,10 +548,10 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype,
|
|||||||
this.drawersContainer.innerHTML = "";
|
this.drawersContainer.innerHTML = "";
|
||||||
this.overlaysContainer.innerHTML = "";
|
this.overlaysContainer.innerHTML = "";
|
||||||
|
|
||||||
if (this.drawer) {
|
if ( this.drawer ) {
|
||||||
this.drawer.destroy();
|
this.drawer.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.source = null;
|
this.source = null;
|
||||||
this.drawer = null;
|
this.drawer = null;
|
||||||
this.drawers = [];
|
this.drawers = [];
|
||||||
@ -579,6 +585,10 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype,
|
|||||||
destroy: function( ) {
|
destroy: function( ) {
|
||||||
this.close();
|
this.close();
|
||||||
|
|
||||||
|
//TODO: implement this...
|
||||||
|
//this.unbindSequenceControls()
|
||||||
|
//this.unbindStandardControls()
|
||||||
|
|
||||||
this.removeAllHandlers();
|
this.removeAllHandlers();
|
||||||
|
|
||||||
// Go through top element (passed to us) and remove all children
|
// Go through top element (passed to us) and remove all children
|
||||||
@ -600,10 +610,10 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype,
|
|||||||
if (this.outerTracker){
|
if (this.outerTracker){
|
||||||
this.outerTracker.destroy();
|
this.outerTracker.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
THIS[ this.hash ] = null;
|
THIS[ this.hash ] = null;
|
||||||
delete THIS[ this.hash ];
|
delete THIS[ this.hash ];
|
||||||
|
|
||||||
// clear all our references to dom objects
|
// clear all our references to dom objects
|
||||||
this.canvas = null;
|
this.canvas = null;
|
||||||
this.keyboardCommandArea = null;
|
this.keyboardCommandArea = null;
|
||||||
|
@ -295,6 +295,7 @@
|
|||||||
equal(null, viewer.container);
|
equal(null, viewer.container);
|
||||||
equal(null, viewer.element);
|
equal(null, viewer.element);
|
||||||
equal(true, closeCalled);
|
equal(true, closeCalled);
|
||||||
|
viewer = null;
|
||||||
start();
|
start();
|
||||||
});
|
});
|
||||||
viewer.open('/test/data/testpattern.dzi');
|
viewer.open('/test/data/testpattern.dzi');
|
||||||
|
@ -1,71 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>OpenSeadragon Memory Check Demo</title>
|
|
||||||
<script type="text/javascript" src='../../build/openseadragon/openseadragon.js'></script>
|
|
||||||
<style type="text/css">
|
|
||||||
|
|
||||||
.openseadragon1 {
|
|
||||||
width: 800px;
|
|
||||||
height: 600px;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div>
|
|
||||||
Simple demo page to monitor OpenSeadragon Memory Usage.
|
|
||||||
</div>
|
|
||||||
<button onclick="createViewer()">Create</button>
|
|
||||||
<button onclick="destroyViewer()">Destroy</button>
|
|
||||||
|
|
||||||
<div id="contentDiv" class="openseadragon1"></div>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var _viewer;
|
|
||||||
|
|
||||||
var generateUniqueHash = (function() {
|
|
||||||
var counter = 0;
|
|
||||||
return function() {
|
|
||||||
return "seadragon_"+(counter++);
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
|
|
||||||
function createViewer() {
|
|
||||||
if (_viewer) {
|
|
||||||
destroyViewer();
|
|
||||||
}
|
|
||||||
|
|
||||||
_viewer = OpenSeadragon({
|
|
||||||
element: document.getElementById("contentDiv"),
|
|
||||||
showNavigationControl: false,
|
|
||||||
springStiffness: 20,
|
|
||||||
animationTime : 1.5,
|
|
||||||
visibilityRatio: 1,
|
|
||||||
hash: "hello",
|
|
||||||
tileSources: {
|
|
||||||
Image: {
|
|
||||||
xmlns: "http://schemas.microsoft.com/deepzoom/2008",
|
|
||||||
Url: 'http://cdn.photosynth.net/ps2/92fe5de9-dffa-4315-9095-082da8b90642/packet/undistorted/img0014/',
|
|
||||||
Format: "jpg",
|
|
||||||
Overlap: 1,
|
|
||||||
TileSize: 510,
|
|
||||||
Size: {
|
|
||||||
Width: 4592,
|
|
||||||
Height: 3448
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function destroyViewer() {
|
|
||||||
if (_viewer) {
|
|
||||||
_viewer.destroy();
|
|
||||||
}
|
|
||||||
_viewer = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
57
test/demo/memorycheck.html
Normal file
57
test/demo/memorycheck.html
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>OpenSeadragon Memory Check Demo</title>
|
||||||
|
<script type="text/javascript" src='../../build/openseadragon/openseadragon.js'></script>
|
||||||
|
<style type="text/css">
|
||||||
|
|
||||||
|
.openseadragon1 {
|
||||||
|
width: 800px;
|
||||||
|
height: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
Simple demo page to monitor OpenSeadragon Memory Usage.
|
||||||
|
</div>
|
||||||
|
<button onclick="createViewer()">Create</button>
|
||||||
|
<button onclick="destroyViewer()">Destroy</button>
|
||||||
|
|
||||||
|
<div id="contentDiv" class="openseadragon1"></div>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var _viewer;
|
||||||
|
|
||||||
|
var generateUniqueHash = (function() {
|
||||||
|
var counter = 0;
|
||||||
|
return function() {
|
||||||
|
return "openseadragon_" + (counter++);
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
|
||||||
|
function createViewer() {
|
||||||
|
if ( _viewer ) {
|
||||||
|
destroyViewer();
|
||||||
|
}
|
||||||
|
|
||||||
|
_viewer = OpenSeadragon({
|
||||||
|
element: document.getElementById("contentDiv"),
|
||||||
|
showNavigationControl: false,
|
||||||
|
prefixUrl: "../../build/openseadragon/images/",
|
||||||
|
hash: generateUniqueHash(), //this is only needed if you want to instantiate more than one viewer at a time.
|
||||||
|
tileSources: "../data/testpattern.dzi"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function destroyViewer() {
|
||||||
|
if ( _viewer ) {
|
||||||
|
_viewer.destroy();
|
||||||
|
}
|
||||||
|
_viewer = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user