No composeFrame if prepareFrame returns false
This commit is contained in:
@@ -143,4 +143,5 @@ ol.renderer.canvas.ImageLayer.prototype.prepareFrame =
|
||||
this.updateLogos(frameState, imageSource);
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -415,4 +415,5 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
|
||||
(origin[0] - center[0]) / tilePixelResolution,
|
||||
(center[1] - origin[1]) / tilePixelResolution);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -138,6 +138,7 @@ ol.renderer.dom.ImageLayer.prototype.prepareFrame =
|
||||
this.updateLogos(frameState, imageSource);
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -175,6 +175,8 @@ ol.renderer.webgl.ImageLayer.prototype.prepareFrame =
|
||||
this.updateAttributions(frameState.attributions, image.getAttributions());
|
||||
this.updateLogos(frameState, imageSource);
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -331,4 +331,5 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame =
|
||||
-0.5,
|
||||
0);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user