Only schedule the unused layers renderer removal when it's needed

This commit is contained in:
Frederic Junod
2018-12-19 14:49:28 +01:00
parent 3193de0906
commit a0f15e1eb6

View File

@@ -250,22 +250,6 @@ class MapRenderer extends Disposable {
return layerRenderer;
}
/**
* @param {import("../PluggableMap.js").default} map Map.
* @param {import("../PluggableMap.js").FrameState} frameState Frame state.
* @private
*/
removeUnusedLayerRenderers_(map, frameState) {
if (frameState) {
const layerStatesMap = getLayerStatesMap(frameState.layerStatesArray);
for (const layerKey in this.layerRenderers_) {
if (!(layerKey in layerStatesMap)) {
this.removeLayerRendererByKey_(layerKey).dispose();
}
}
}
}
/**
* Render.
* @abstract
@@ -290,7 +274,14 @@ class MapRenderer extends Disposable {
* @protected
*/
scheduleRemoveUnusedLayerRenderers(frameState) {
frameState.postRenderFunctions.push(this.removeUnusedLayerRenderers_.bind(this));
const layerStatesMap = getLayerStatesMap(frameState.layerStatesArray);
for (const layerKey in this.layerRenderers_) {
if (!(layerKey in layerStatesMap)) {
frameState.postRenderFunctions.push(function() {
this.removeLayerRendererByKey_(layerKey).dispose();
}.bind(this));
}
}
}
}