Only set renderer to ready when all messages are received

This commit is contained in:
Maximilian Krög
2022-02-02 01:01:12 +01:00
parent 613d083e46
commit 93c08784af
+12 -1
View File
@@ -287,6 +287,13 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
*/ */
this.hitRenderTarget_; this.hitRenderTarget_;
/**
* Keep track of latest message sent to worker
* @type {number}
* @private
*/
this.generateBuffersRun_ = 0;
this.worker_ = createWebGLWorker(); this.worker_ = createWebGLWorker();
this.worker_.addEventListener( this.worker_.addEventListener(
'message', 'message',
@@ -321,8 +328,11 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
this.renderInstructions_ = new Float32Array( this.renderInstructions_ = new Float32Array(
event.data.renderInstructions event.data.renderInstructions
); );
if (received.generateBuffersRun === this.generateBuffersRun_) {
this.ready = true;
}
} }
this.ready = true;
this.getLayer().changed(); this.getLayer().changed();
} }
}.bind(this) }.bind(this)
@@ -612,6 +622,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
}; };
// additional properties will be sent back as-is by the worker // additional properties will be sent back as-is by the worker
message['projectionTransform'] = projectionTransform; message['projectionTransform'] = projectionTransform;
message['generateBuffersRun'] = ++this.generateBuffersRun_;
this.ready = false; this.ready = false;
this.worker_.postMessage(message, [this.renderInstructions_.buffer]); this.worker_.postMessage(message, [this.renderInstructions_.buffer]);
this.renderInstructions_ = null; this.renderInstructions_ = null;