From f0cbc44860cbdb3d87dc07a3721b2594c0c8ea48 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Thu, 12 Sep 2019 11:51:50 +0200 Subject: [PATCH] Cancel postrender before disposing renderer --- src/ol/PluggableMap.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ol/PluggableMap.js b/src/ol/PluggableMap.js index 8521202709..d75e4b7f65 100644 --- a/src/ol/PluggableMap.js +++ b/src/ol/PluggableMap.js @@ -166,6 +166,12 @@ class PluggableMap extends BaseObject { this.pixelRatio_ = options.pixelRatio !== undefined ? options.pixelRatio : DEVICE_PIXEL_RATIO; + /** + * @private + * @type {*} + */ + this.postRenderTimeoutHandle_; + /** * @private * @type {number|undefined} @@ -1022,6 +1028,8 @@ class PluggableMap extends BaseObject { if (!targetElement) { if (this.renderer_) { + clearTimeout(this.postRenderTimeoutHandle_); + this.postRenderFunctions_.length = 0; this.renderer_.dispose(); this.renderer_ = null; } @@ -1284,7 +1292,7 @@ class PluggableMap extends BaseObject { this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState)); - setTimeout(this.handlePostRender.bind(this), 0); + this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0); }