Fix rendercomplete for WebGLPoints layer and subclasses
This commit is contained in:
@@ -943,10 +943,13 @@ class PluggableMap extends BaseObject {
|
||||
/**
|
||||
* @return {boolean} Layers have sources that are still loading.
|
||||
*/
|
||||
getLoading() {
|
||||
getLoadingOrNotReady() {
|
||||
const layerStatesArray = this.getLayerGroup().getLayerStatesArray();
|
||||
for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
||||
const layer = layerStatesArray[i].layer;
|
||||
if (!layer.getRenderer().ready) {
|
||||
return true;
|
||||
}
|
||||
const source = /** @type {import("./layer/Layer.js").default} */ (
|
||||
layer
|
||||
).getSource();
|
||||
@@ -1561,7 +1564,7 @@ class PluggableMap extends BaseObject {
|
||||
this.renderComplete_ =
|
||||
!this.tileQueue_.getTilesLoading() &&
|
||||
!this.tileQueue_.getCount() &&
|
||||
!this.getLoading();
|
||||
!this.getLoadingOrNotReady();
|
||||
|
||||
if (!this.postRenderTimeoutHandle_) {
|
||||
this.postRenderTimeoutHandle_ = setTimeout(() => {
|
||||
|
||||
@@ -17,6 +17,11 @@ class LayerRenderer extends Observable {
|
||||
constructor(layer) {
|
||||
super();
|
||||
|
||||
/**
|
||||
* @type {boolean} The renderer is initialized and ready to render.
|
||||
*/
|
||||
this.ready = true;
|
||||
|
||||
/** @private */
|
||||
this.boundHandleImageChange_ = this.handleImageChange_.bind(this);
|
||||
|
||||
|
||||
@@ -137,6 +137,8 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
|
||||
postProcesses: options.postProcesses,
|
||||
});
|
||||
|
||||
this.ready = false;
|
||||
|
||||
this.sourceRevision_ = -1;
|
||||
|
||||
this.verticesBuffer_ = new WebGLArrayBuffer(ARRAY_BUFFER, DYNAMIC_DRAW);
|
||||
@@ -320,7 +322,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
|
||||
event.data.renderInstructions
|
||||
);
|
||||
}
|
||||
|
||||
this.ready = true;
|
||||
this.getLayer().changed();
|
||||
}
|
||||
}.bind(this)
|
||||
@@ -610,6 +612,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
|
||||
};
|
||||
// additional properties will be sent back as-is by the worker
|
||||
message['projectionTransform'] = projectionTransform;
|
||||
this.ready = false;
|
||||
this.worker_.postMessage(message, [this.renderInstructions_.buffer]);
|
||||
this.renderInstructions_ = null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user