Make ol.renderer.Map behave like a null renderer, fixes #82

With this patch, creating a new ol.renderer.Map will return a map
renderer that does nothing.  Previously, it could cause assertion
failures.
This commit is contained in:
Tom Payne
2012-11-02 17:10:41 +01:00
parent 1de8821739
commit dfd495153d
3 changed files with 19 additions and 12 deletions

View File

@@ -228,7 +228,15 @@ ol.renderer.dom.Map.prototype.render = function() {
this.renderedRotation_ = mapRotation; this.renderedRotation_ = mapRotation;
this.renderedSize_ = mapSize; this.renderedSize_ = mapSize;
return goog.base(this, 'render'); var animate = false;
this.forEachReadyVisibleLayer(function(layer, layerRenderer) {
if (layerRenderer.render()) {
animate = true;
}
});
return animate;
}; };

View File

@@ -115,7 +115,9 @@ ol.renderer.Map.prototype.canRotate = goog.functions.FALSE;
* @protected * @protected
* @return {ol.renderer.Layer} layerRenderer Layer renderer. * @return {ol.renderer.Layer} layerRenderer Layer renderer.
*/ */
ol.renderer.Map.prototype.createLayerRenderer = goog.abstractMethod; ol.renderer.Map.prototype.createLayerRenderer = function(layer) {
return null;
};
/** /**
@@ -310,15 +312,7 @@ ol.renderer.Map.prototype.removeLayerRenderer = function(layer) {
/** /**
* @return {boolean} Animating. * @return {boolean} Animating.
*/ */
ol.renderer.Map.prototype.render = function() { ol.renderer.Map.prototype.render = goog.functions.FALSE;
var animate = false;
this.forEachReadyVisibleLayer(function(layer, layerRenderer) {
if (layerRenderer.render()) {
animate = true;
}
});
return animate;
};
/** /**

View File

@@ -562,7 +562,12 @@ ol.renderer.webgl.Map.prototype.render = function() {
this.canvasSize_ = size; this.canvasSize_ = size;
} }
var animate = goog.base(this, 'render'); var animate = false;
this.forEachReadyVisibleLayer(function(layer, layerRenderer) {
if (layerRenderer.render()) {
animate = true;
}
});
var gl = this.getGL(); var gl = this.getGL();