More cleanup in the WebGL tile layer's dispose method
This commit is contained in:
@@ -77,6 +77,8 @@ class WebGLLayerRenderer extends LayerRenderer {
|
||||
*/
|
||||
disposeInternal() {
|
||||
this.helper.dispose();
|
||||
delete this.helper;
|
||||
|
||||
super.disposeInternal();
|
||||
}
|
||||
|
||||
|
||||
@@ -181,6 +181,11 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer {
|
||||
this.indices_ = indices;
|
||||
|
||||
const cacheSize = options.cacheSize !== undefined ? options.cacheSize : 512;
|
||||
|
||||
/**
|
||||
* @type {import("../../structs/LRUCache.js").default<import("../../webgl/TileTexture.js").default>}
|
||||
* @private
|
||||
*/
|
||||
this.tileTextureCache_ = new LRUCache(cacheSize);
|
||||
|
||||
this.renderedOpacity_ = NaN;
|
||||
@@ -533,6 +538,29 @@ class WebGLTileLayerRenderer extends WebGLLayerRenderer {
|
||||
}
|
||||
return covered;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up.
|
||||
*/
|
||||
disposeInternal() {
|
||||
const helper = this.helper;
|
||||
const gl = helper.getGL();
|
||||
|
||||
helper.deleteBuffer(this.indices_);
|
||||
delete this.indices_;
|
||||
|
||||
gl.deleteProgram(this.program_);
|
||||
delete this.program_;
|
||||
|
||||
const tileTextureCache = this.tileTextureCache_;
|
||||
tileTextureCache.forEach(function (tileTexture) {
|
||||
tileTexture.dispose();
|
||||
});
|
||||
tileTextureCache.clear();
|
||||
delete this.tileTextureCache_;
|
||||
|
||||
super.disposeInternal();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user