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);
|
this.updateLogos(frameState, imageSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -188,8 +188,9 @@ ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {
|
|||||||
layerState.sourceState != ol.source.State.READY) {
|
layerState.sourceState != ol.source.State.READY) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
layerRenderer.prepareFrame(frameState, layerState);
|
if (layerRenderer.prepareFrame(frameState, layerState)) {
|
||||||
layerRenderer.composeFrame(frameState, layerState, context);
|
layerRenderer.composeFrame(frameState, layerState, context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.dispatchComposeEvent_(ol.render.EventType.POSTCOMPOSE, frameState);
|
this.dispatchComposeEvent_(ol.render.EventType.POSTCOMPOSE, frameState);
|
||||||
|
|||||||
@@ -415,4 +415,5 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
|
|||||||
(origin[0] - center[0]) / tilePixelResolution,
|
(origin[0] - center[0]) / tilePixelResolution,
|
||||||
(center[1] - origin[1]) / 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] ||
|
if (!this.dirty_ && (frameState.viewHints[ol.ViewHint.ANIMATING] ||
|
||||||
frameState.viewHints[ol.ViewHint.INTERACTING])) {
|
frameState.viewHints[ol.ViewHint.INTERACTING])) {
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var frameStateExtent = frameState.extent;
|
var frameStateExtent = frameState.extent;
|
||||||
@@ -195,7 +195,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
|
|||||||
this.renderedRevision_ == vectorLayerRevision &&
|
this.renderedRevision_ == vectorLayerRevision &&
|
||||||
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
||||||
ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) {
|
ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) {
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var extent = this.renderedExtent_;
|
var extent = this.renderedExtent_;
|
||||||
@@ -258,6 +258,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
|
|||||||
this.renderedRenderOrder_ = vectorLayerRenderOrder;
|
this.renderedRenderOrder_ = vectorLayerRenderOrder;
|
||||||
this.replayGroup_ = replayGroup;
|
this.replayGroup_ = replayGroup;
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -138,6 +138,7 @@ ol.renderer.dom.ImageLayer.prototype.prepareFrame =
|
|||||||
this.updateLogos(frameState, imageSource);
|
this.updateLogos(frameState, imageSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame =
|
|||||||
goog.style.setElementShown(this.target, false);
|
goog.style.setElementShown(this.target, false);
|
||||||
this.renderedVisible_ = false;
|
this.renderedVisible_ = false;
|
||||||
}
|
}
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var pixelRatio = frameState.pixelRatio;
|
var pixelRatio = frameState.pixelRatio;
|
||||||
@@ -263,6 +263,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame =
|
|||||||
this.scheduleExpireCache(frameState, tileSource);
|
this.scheduleExpireCache(frameState, tileSource);
|
||||||
this.updateLogos(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 {olx.FrameState} frameState Frame state.
|
||||||
* @param {ol.layer.LayerState} layerState Layer state.
|
* @param {ol.layer.LayerState} layerState Layer state.
|
||||||
|
* @return {boolean} whether composeFrame should be called.
|
||||||
*/
|
*/
|
||||||
ol.renderer.Layer.prototype.prepareFrame = goog.abstractMethod;
|
ol.renderer.Layer.prototype.prepareFrame = goog.abstractMethod;
|
||||||
|
|
||||||
|
|||||||
@@ -175,6 +175,8 @@ ol.renderer.webgl.ImageLayer.prototype.prepareFrame =
|
|||||||
this.updateAttributions(frameState.attributions, image.getAttributions());
|
this.updateAttributions(frameState.attributions, image.getAttributions());
|
||||||
this.updateLogos(frameState, imageSource);
|
this.updateLogos(frameState, imageSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
goog.provide('ol.renderer.webgl.Map');
|
goog.provide('ol.renderer.webgl.Map');
|
||||||
|
|
||||||
|
goog.require('goog.array');
|
||||||
goog.require('goog.asserts');
|
goog.require('goog.asserts');
|
||||||
goog.require('goog.dom');
|
goog.require('goog.dom');
|
||||||
goog.require('goog.dom.TagName');
|
goog.require('goog.dom.TagName');
|
||||||
@@ -448,23 +449,19 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
|
|||||||
var layerStatesToDraw = [];
|
var layerStatesToDraw = [];
|
||||||
var layerStatesArray = frameState.layerStatesArray;
|
var layerStatesArray = frameState.layerStatesArray;
|
||||||
var viewResolution = frameState.viewState.resolution;
|
var viewResolution = frameState.viewState.resolution;
|
||||||
var i, ii, layerState;
|
var i, ii, layerRenderer, layerState;
|
||||||
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
||||||
layerState = layerStatesArray[i];
|
layerState = layerStatesArray[i];
|
||||||
if (ol.layer.Layer.visibleAtResolution(layerState, viewResolution) &&
|
if (ol.layer.Layer.visibleAtResolution(layerState, viewResolution) &&
|
||||||
layerState.sourceState == ol.source.State.READY) {
|
layerState.sourceState == ol.source.State.READY) {
|
||||||
layerStatesToDraw.push(layerState);
|
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;
|
var width = frameState.size[0] * frameState.pixelRatio;
|
||||||
var height = frameState.size[1] * frameState.pixelRatio;
|
var height = frameState.size[1] * frameState.pixelRatio;
|
||||||
if (this.canvas_.width != width || this.canvas_.height != height) {
|
if (this.canvas_.width != width || this.canvas_.height != height) {
|
||||||
|
|||||||
@@ -331,4 +331,5 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame =
|
|||||||
-0.5,
|
-0.5,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user