From 93c08784af88c3c89367d901de80c3857c233133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Kr=C3=B6g?= Date: Wed, 2 Feb 2022 01:01:12 +0100 Subject: [PATCH] Only set renderer to ready when all messages are received --- src/ol/renderer/webgl/PointsLayer.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/ol/renderer/webgl/PointsLayer.js b/src/ol/renderer/webgl/PointsLayer.js index f0b9afe7d3..2debf833ee 100644 --- a/src/ol/renderer/webgl/PointsLayer.js +++ b/src/ol/renderer/webgl/PointsLayer.js @@ -287,6 +287,13 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { */ this.hitRenderTarget_; + /** + * Keep track of latest message sent to worker + * @type {number} + * @private + */ + this.generateBuffersRun_ = 0; + this.worker_ = createWebGLWorker(); this.worker_.addEventListener( 'message', @@ -321,8 +328,11 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { this.renderInstructions_ = new Float32Array( event.data.renderInstructions ); + if (received.generateBuffersRun === this.generateBuffersRun_) { + this.ready = true; + } } - this.ready = true; + this.getLayer().changed(); } }.bind(this) @@ -612,6 +622,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { }; // additional properties will be sent back as-is by the worker message['projectionTransform'] = projectionTransform; + message['generateBuffersRun'] = ++this.generateBuffersRun_; this.ready = false; this.worker_.postMessage(message, [this.renderInstructions_.buffer]); this.renderInstructions_ = null;