From ac8e62818f805647ffff421debf17d7557d376ae Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Sat, 11 Jul 2015 14:58:31 +0200 Subject: [PATCH] Fire WebGL precompose event in same sequence as other renderers In other map renderers, the precompose event is fired before preparing and composing layer frames. In WebGL, it is fired in between. This change makes it so the sequence of events is the same for all renderers. Because the WebGL renderer creates the list of layers to render before the precompose event, unmanaged layers are never rendered. This is also fixed by dispatching the precompose event earlier. --- src/ol/renderer/webgl/webglmaprenderer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js index a62a8f0348..74958ddb29 100644 --- a/src/ol/renderer/webgl/webglmaprenderer.js +++ b/src/ol/renderer/webgl/webglmaprenderer.js @@ -467,6 +467,8 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) { this.textureCache_.set((-frameState.index).toString(), null); ++this.textureCacheFrameMarkerCount_; + this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState); + /** @type {Array.} */ var layerStatesToDraw = []; var layerStatesArray = frameState.layerStatesArray; @@ -499,8 +501,6 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) { gl.enable(goog.webgl.BLEND); gl.viewport(0, 0, this.canvas_.width, this.canvas_.height); - this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState); - for (i = 0, ii = layerStatesToDraw.length; i < ii; ++i) { layerState = layerStatesToDraw[i]; layerRenderer = this.getLayerRenderer(layerState.layer);