Add 'rendercomplete' event

This commit is contained in:
ahocevar
2018-08-21 17:29:10 +02:00
parent 3f98094d9d
commit 1baa8be269
11 changed files with 128 additions and 60 deletions

View File

@@ -332,6 +332,13 @@ function expireIconCache(map, frameState) {
MapRenderer.prototype.renderFrame = VOID;
/**
* @param {module:ol/render/EventType} type Event type.
* @param {module:ol/PluggableMap~FrameState} frameState Frame state.
*/
MapRenderer.prototype.dispatchRenderEvent = VOID;
/**
* @param {module:ol/layer/Layer~State} state1 First layer state.
* @param {module:ol/layer/Layer~State} state2 Second layer state.

View File

@@ -69,9 +69,8 @@ class CanvasMapRenderer extends MapRenderer {
/**
* @param {module:ol/render/EventType} type Event type.
* @param {module:ol/PluggableMap~FrameState} frameState Frame state.
* @private
*/
dispatchComposeEvent_(type, frameState) {
dispatchRenderEvent(type, frameState) {
const map = this.getMap();
const context = this.context_;
if (map.hasListener(type)) {
@@ -135,7 +134,7 @@ class CanvasMapRenderer extends MapRenderer {
this.calculateMatrices2D(frameState);
this.dispatchComposeEvent_(RenderEventType.PRECOMPOSE, frameState);
this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);
const layerStatesArray = frameState.layerStatesArray;
stableSort(layerStatesArray, sortByZIndex);
@@ -164,7 +163,7 @@ class CanvasMapRenderer extends MapRenderer {
context.restore();
}
this.dispatchComposeEvent_(RenderEventType.POSTCOMPOSE, frameState);
this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);
if (!this.renderedVisible_) {
this.canvas_.style.display = '';

View File

@@ -249,9 +249,8 @@ class WebGLMapRenderer extends MapRenderer {
/**
* @param {module:ol/render/EventType} type Event type.
* @param {module:ol/PluggableMap~FrameState} frameState Frame state.
* @private
*/
dispatchComposeEvent_(type, frameState) {
dispatchRenderEvent(type, frameState) {
const map = this.getMap();
if (map.hasListener(type)) {
const context = this.context_;
@@ -411,7 +410,7 @@ class WebGLMapRenderer extends MapRenderer {
this.textureCache_.set((-frameState.index).toString(), null);
++this.textureCacheFrameMarkerCount_;
this.dispatchComposeEvent_(RenderEventType.PRECOMPOSE, frameState);
this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);
/** @type {Array<module:ol/layer/Layer~State>} */
const layerStatesToDraw = [];
@@ -470,7 +469,7 @@ class WebGLMapRenderer extends MapRenderer {
frameState.animate = true;
}
this.dispatchComposeEvent_(RenderEventType.POSTCOMPOSE, frameState);
this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);
this.scheduleRemoveUnusedLayerRenderers(frameState);
this.scheduleExpireIconCache(frameState);