From c59047c965eb96a26a17ef1b600b80c2489ef653 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Mon, 6 Dec 2021 23:03:40 +0100 Subject: [PATCH] Render is only complete when no tiles are queued --- src/ol/PluggableMap.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ol/PluggableMap.js b/src/ol/PluggableMap.js index 52002070c0..6e3e4f797f 100644 --- a/src/ol/PluggableMap.js +++ b/src/ol/PluggableMap.js @@ -208,6 +208,12 @@ class PluggableMap extends BaseObject { const optionsInternal = createOptionsInternal(options); + /** + * @private + * @type {boolean} + */ + this.renderComplete_; + /** @private */ this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this); @@ -1150,8 +1156,7 @@ class PluggableMap extends BaseObject { frameState && this.hasListener(RenderEventType.RENDERCOMPLETE) && !frameState.animate && - !this.tileQueue_.getTilesLoading() && - !this.getLoading() + this.renderComplete_ ) { this.renderer_.dispatchRenderEvent( RenderEventType.RENDERCOMPLETE, @@ -1528,6 +1533,11 @@ class PluggableMap extends BaseObject { this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState)); + this.renderComplete_ = + !this.tileQueue_.getTilesLoading() && + !this.tileQueue_.getCount() && + !this.getLoading(); + if (!this.postRenderTimeoutHandle_) { this.postRenderTimeoutHandle_ = setTimeout(() => { this.postRenderTimeoutHandle_ = undefined;