Adapt the batch renderers to trigger a repaint after buffer rebuild

This commit is contained in:
Olivier Guyot
2022-05-04 11:15:30 +02:00
parent 8769ea519e
commit 9e35acaa0a
3 changed files with 41 additions and 10 deletions

View File

@@ -73,15 +73,16 @@ class AbstractBatchRenderer {
* @param {import("./MixedGeometryBatch.js").GeometryBatch} batch Geometry batch
* @param {import("../../PluggableMap").FrameState} frameState Frame state.
* @param {import("../../geom/GeometryType.js").default} geometryType Geometry type
* @param {function(): void} callback Function called once the render buffers are updated
*/
rebuild(batch, frameState, geometryType) {
rebuild(batch, frameState, geometryType, callback) {
// store transform for rendering instructions
batch.renderInstructionsTransform = this.helper_.makeProjectionTransform(
frameState,
createTransform()
);
this.generateRenderInstructions_(batch);
this.generateBuffers_(batch, geometryType);
this.generateBuffers_(batch, geometryType, callback);
}
/**
@@ -123,9 +124,10 @@ class AbstractBatchRenderer {
* This is asynchronous: webgl buffers wil _not_ be updated right away
* @param {import("./MixedGeometryBatch.js").GeometryBatch} batch Geometry batch
* @param {import("../../geom/GeometryType.js").default} geometryType Geometry type
* @param {function(): void} callback Function called once the render buffers are updated
* @protected
*/
generateBuffers_(batch, geometryType) {
generateBuffers_(batch, geometryType, callback) {
const messageId = workerMessageCounter++;
let messageType;
@@ -192,7 +194,7 @@ class AbstractBatchRenderer {
received.renderInstructions
);
// TODO: call layer.changed somehow for the layer to rerender!!!1
callback();
}.bind(this);
this.worker_.addEventListener('message', handleMessage);