From a26deb62bf8e7aab779526a3ecdb9a5b34141b4c Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 12 Jan 2013 18:54:09 +0100 Subject: [PATCH 1/7] Remove unused variable --- src/ol/renderer/webgl/webglmaprenderer.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js index 83a75771d3..b310f60f94 100644 --- a/src/ol/renderer/webgl/webglmaprenderer.js +++ b/src/ol/renderer/webgl/webglmaprenderer.js @@ -267,7 +267,6 @@ ol.renderer.webgl.Map.prototype.canRotate = goog.functions.TRUE; * @inheritDoc */ ol.renderer.webgl.Map.prototype.createLayerRenderer = function(layer) { - var gl = this.getGL(); if (layer instanceof ol.layer.TileLayer) { return new ol.renderer.webgl.TileLayer(this, layer); } else { From 655b6a1b006eb3e22e1c82a33a18f3621cd905bb Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 12 Jan 2013 18:57:50 +0100 Subject: [PATCH 2/7] Always free WebGL resources in post render --- src/ol/renderer/webgl/webglrenderer.js | 6 ----- .../renderer/webgl/webgltilelayerrenderer.js | 26 ++++++------------- 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/src/ol/renderer/webgl/webglrenderer.js b/src/ol/renderer/webgl/webglrenderer.js index c8eae9c377..d7ba243f8f 100644 --- a/src/ol/renderer/webgl/webglrenderer.js +++ b/src/ol/renderer/webgl/webglrenderer.js @@ -3,12 +3,6 @@ goog.provide('ol.renderer.webgl'); goog.require('ol.webgl'); -/** - * @define {boolean} Free resources immediately. - */ -ol.renderer.webgl.FREE_RESOURCES_IMMEDIATELY = false; - - /** * @return {boolean} Is supported. */ diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index cd1d95cbb5..890faf212e 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -183,24 +183,14 @@ ol.renderer.webgl.TileLayer.prototype.bindFramebuffer_ = this.logger.info('re-sizing framebuffer'); } - if (ol.renderer.webgl.FREE_RESOURCES_IMMEDIATELY) { - if (goog.DEBUG) { - this.logger.info('freeing WebGL resources'); - } - if (!gl.isContextLost()) { - gl.deleteFramebuffer(this.framebuffer_); - gl.deleteTexture(this.texture_); - } - } else { - var map = this.getMap(); - frameState.postRenderFunctions.push( - goog.partial(function(gl, framebuffer, texture) { - if (!gl.isContextLost()) { - gl.deleteFramebuffer(framebuffer); - gl.deleteTexture(texture); - } - }, gl, this.framebuffer_, this.texture_)); - } + var map = this.getMap(); + frameState.postRenderFunctions.push( + goog.partial(function(gl, framebuffer, texture) { + if (!gl.isContextLost()) { + gl.deleteFramebuffer(framebuffer); + gl.deleteTexture(texture); + } + }, gl, this.framebuffer_, this.texture_)); var texture = gl.createTexture(); gl.bindTexture(goog.webgl.TEXTURE_2D, texture); From be28fb4ccc3f7ba888e7d3bf688f95131b455996 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 12 Jan 2013 18:58:36 +0100 Subject: [PATCH 3/7] Don't try to overload method return type --- .../renderer/webgl/webgltilelayerrenderer.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index 890faf212e..ba1a771db8 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -233,15 +233,6 @@ ol.renderer.webgl.TileLayer.prototype.disposeInternal = function() { }; -/** - * @return {ol.layer.TileLayer} Layer. - * @inheritDoc - */ -ol.renderer.webgl.TileLayer.prototype.getLayer = function() { - return /** @type {ol.layer.TileLayer} */ (goog.base(this, 'getLayer')); -}; - - /** * @inheritDoc */ @@ -258,6 +249,14 @@ ol.renderer.webgl.TileLayer.prototype.getTexture = function() { }; +/** + * @return {ol.layer.TileLayer} Tile layer. + */ +ol.renderer.webgl.TileLayer.prototype.getTileLayer = function() { + return /** @type {ol.layer.TileLayer} */ (this.getLayer()); +}; + + /** * @inheritDoc */ @@ -282,7 +281,7 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame = var view2DState = frameState.view2DState; var center = view2DState.center; - var tileLayer = this.getLayer(); + var tileLayer = this.getTileLayer(); var tileSource = tileLayer.getTileSource(); var tileGrid = tileSource.getTileGrid(); var z = tileGrid.getZForResolution(view2DState.resolution); From 97207e572344d323253381c36780c25276567c85 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 12 Jan 2013 19:01:09 +0100 Subject: [PATCH 4/7] Remove rarely-used logger --- src/ol/renderer/webgl/webgltilelayerrenderer.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index ba1a771db8..8f27749f9c 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -8,7 +8,6 @@ goog.provide('ol.renderer.webgl.tilelayerrenderer.shader.Vertex'); goog.require('goog.array'); goog.require('goog.asserts'); -goog.require('goog.debug.Logger'); goog.require('goog.events.EventType'); goog.require('goog.object'); goog.require('goog.structs.PriorityQueue'); @@ -88,14 +87,6 @@ ol.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) { goog.base(this, mapRenderer, tileLayer); - if (goog.DEBUG) { - /** - * @inheritDoc - */ - this.logger = goog.debug.Logger.getLogger( - 'ol.renderer.webgl.tilelayerrenderer.' + goog.getUid(this)); - } - /** * @private * @type {ol.renderer.webgl.FragmentShader} @@ -179,10 +170,6 @@ ol.renderer.webgl.TileLayer.prototype.bindFramebuffer_ = if (!goog.isDef(this.framebufferDimension_) || this.framebufferDimension_ != framebufferDimension) { - if (goog.DEBUG) { - this.logger.info('re-sizing framebuffer'); - } - var map = this.getMap(); frameState.postRenderFunctions.push( goog.partial(function(gl, framebuffer, texture) { From 0443ebc3fa5b1191ad9e29c5171eb67922a5ad8a Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 12 Jan 2013 19:23:54 +0100 Subject: [PATCH 5/7] Remove stale FIXMEs --- src/ol/renderer/webgl/webglmaprenderer.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js index b310f60f94..8c5dfbd258 100644 --- a/src/ol/renderer/webgl/webglmaprenderer.js +++ b/src/ol/renderer/webgl/webglmaprenderer.js @@ -1,7 +1,5 @@ // FIXME clear textureCache -// FIXME defer texture loads until after render when animating // FIXME generational tile texture garbage collector newFrame/get -// FIXME defer cleanup until post-render // FIXME check against gl.getParameter(webgl.MAX_TEXTURE_SIZE) goog.provide('ol.renderer.webgl.Map'); From 3f6e6169afae61dd38bcffdb992c3b8097e13042 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 12 Jan 2013 19:24:20 +0100 Subject: [PATCH 6/7] Hide canvas when map is not defined --- src/ol/renderer/webgl/webglmaprenderer.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js index 8c5dfbd258..758da3768e 100644 --- a/src/ol/renderer/webgl/webglmaprenderer.js +++ b/src/ol/renderer/webgl/webglmaprenderer.js @@ -492,9 +492,10 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) { var gl = this.getGL(); if (goog.isNull(frameState)) { - gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, null); - gl.clearColor(0, 0, 0, 0); - gl.clear(goog.webgl.COLOR_BUFFER_BIT); + if (this.renderedVisible_) { + goog.style.showElement(this.canvas_, false); + this.renderedVisible_ = false; + } return false; } @@ -572,6 +573,11 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) { gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4); }, this); + if (!this.renderedVisible_) { + goog.style.showElement(this.canvas_, true); + this.renderedVisible_ = true; + } + }; From 78e8e34fe6b3efa9f8012fa0b348860a7c3d5d50 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Mon, 14 Jan 2013 11:13:34 +0100 Subject: [PATCH 7/7] Add missing instance variable declaration, thanks @elemoine --- src/ol/renderer/webgl/webglmaprenderer.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js index 758da3768e..569a9179c0 100644 --- a/src/ol/renderer/webgl/webglmaprenderer.js +++ b/src/ol/renderer/webgl/webglmaprenderer.js @@ -117,6 +117,12 @@ ol.renderer.webgl.Map = function(container, map) { this.canvas_.className = 'ol-unselectable'; goog.dom.insertChildAt(container, this.canvas_, 0); + /** + * @private + * @type {boolean} + */ + this.renderedVisible_ = true; + /** * @private * @type {ol.Size}