No composeFrame if prepareFrame returns false

This commit is contained in:
Éric Lemoine
2014-08-22 18:08:26 +02:00
parent 7a2bad543f
commit def1af4492
10 changed files with 22 additions and 15 deletions

View File

@@ -143,4 +143,5 @@ ol.renderer.canvas.ImageLayer.prototype.prepareFrame =
this.updateLogos(frameState, imageSource);
}
return true;
};

View File

@@ -188,9 +188,10 @@ ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {
layerState.sourceState != ol.source.State.READY) {
continue;
}
layerRenderer.prepareFrame(frameState, layerState);
if (layerRenderer.prepareFrame(frameState, layerState)) {
layerRenderer.composeFrame(frameState, layerState, context);
}
}
this.dispatchComposeEvent_(ol.render.EventType.POSTCOMPOSE, frameState);

View File

@@ -415,4 +415,5 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
(origin[0] - center[0]) / tilePixelResolution,
(center[1] - origin[1]) / tilePixelResolution);
return true;
};

View File

@@ -176,7 +176,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
if (!this.dirty_ && (frameState.viewHints[ol.ViewHint.ANIMATING] ||
frameState.viewHints[ol.ViewHint.INTERACTING])) {
return;
return true;
}
var frameStateExtent = frameState.extent;
@@ -195,7 +195,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
this.renderedRevision_ == vectorLayerRevision &&
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) {
return;
return true;
}
var extent = this.renderedExtent_;
@@ -258,6 +258,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
this.renderedRenderOrder_ = vectorLayerRenderOrder;
this.replayGroup_ = replayGroup;
return true;
};

View File

@@ -138,6 +138,7 @@ ol.renderer.dom.ImageLayer.prototype.prepareFrame =
this.updateLogos(frameState, imageSource);
}
return true;
};

View File

@@ -86,7 +86,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame =
goog.style.setElementShown(this.target, false);
this.renderedVisible_ = false;
}
return;
return true;
}
var pixelRatio = frameState.pixelRatio;
@@ -263,6 +263,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame =
this.scheduleExpireCache(frameState, tileSource);
this.updateLogos(frameState, tileSource);
return true;
};

View File

@@ -98,6 +98,7 @@ ol.renderer.Layer.prototype.handleImageChange = function(event) {
/**
* @param {olx.FrameState} frameState Frame state.
* @param {ol.layer.LayerState} layerState Layer state.
* @return {boolean} whether composeFrame should be called.
*/
ol.renderer.Layer.prototype.prepareFrame = goog.abstractMethod;

View File

@@ -175,6 +175,8 @@ ol.renderer.webgl.ImageLayer.prototype.prepareFrame =
this.updateAttributions(frameState.attributions, image.getAttributions());
this.updateLogos(frameState, imageSource);
}
return true;
};

View File

@@ -2,6 +2,7 @@
goog.provide('ol.renderer.webgl.Map');
goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.dom');
goog.require('goog.dom.TagName');
@@ -448,21 +449,17 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
var layerStatesToDraw = [];
var layerStatesArray = frameState.layerStatesArray;
var viewResolution = frameState.viewState.resolution;
var i, ii, layerState;
var i, ii, layerRenderer, layerState;
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
layerState = layerStatesArray[i];
if (ol.layer.Layer.visibleAtResolution(layerState, viewResolution) &&
layerState.sourceState == ol.source.State.READY) {
layerRenderer = this.getLayerRenderer(layerState.layer);
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
if (layerRenderer.prepareFrame(frameState, layerState)) {
layerStatesToDraw.push(layerState);
}
}
var layerRenderer;
for (i = 0, ii = layerStatesToDraw.length; i < ii; ++i) {
layerState = layerStatesToDraw[i];
layerRenderer = this.getLayerRenderer(layerState.layer);
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
layerRenderer.prepareFrame(frameState, layerState);
}
var width = frameState.size[0] * frameState.pixelRatio;

View File

@@ -331,4 +331,5 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame =
-0.5,
0);
return true;
};