From 5c76cb01afe62b4a9d5f26f41b9c428bc7a25cb3 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Wed, 4 May 2016 17:13:27 -0400 Subject: [PATCH 1/2] Use a snapshot of the frameState extent --- src/ol/source/rastersource.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/ol/source/rastersource.js b/src/ol/source/rastersource.js index 9f1a5c1dbb..bbae4bc9d1 100644 --- a/src/ol/source/rastersource.js +++ b/src/ol/source/rastersource.js @@ -219,15 +219,16 @@ ol.source.Raster.prototype.getImage = function(extent, resolution, pixelRatio, p return null; } - if (!this.isDirty_(extent, resolution)) { + var currentExtent = extent.slice(); + if (!this.isDirty_(currentExtent, resolution)) { return this.renderedImageCanvas_; } var context = this.canvasContext_; var canvas = context.canvas; - var width = Math.round(ol.extent.getWidth(extent) / resolution); - var height = Math.round(ol.extent.getHeight(extent) / resolution); + var width = Math.round(ol.extent.getWidth(currentExtent) / resolution); + var height = Math.round(ol.extent.getHeight(currentExtent) / resolution); if (width !== canvas.width || height !== canvas.height) { @@ -235,16 +236,16 @@ ol.source.Raster.prototype.getImage = function(extent, resolution, pixelRatio, p canvas.height = height; } - var frameState = this.updateFrameState_(extent, resolution, projection); + var frameState = this.updateFrameState_(currentExtent, resolution, projection); var imageCanvas = new ol.ImageCanvas( - extent, resolution, 1, this.getAttributions(), canvas, + currentExtent, resolution, 1, this.getAttributions(), canvas, this.composeFrame_.bind(this, frameState)); this.renderedImageCanvas_ = imageCanvas; this.renderedState_ = { - extent: extent, + extent: currentExtent, resolution: resolution, revision: this.getRevision() }; From 39087b2fa482294f61e019c266f7d47a9a80829f Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Wed, 4 May 2016 17:14:05 -0400 Subject: [PATCH 2/2] Reuse the frameState extent --- src/ol/map.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ol/map.js b/src/ol/map.js index f3327ae40d..6d860ac42c 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -1283,6 +1283,7 @@ ol.Map.prototype.renderFrame_ = function(time) { var size = this.getSize(); var view = this.getView(); + var extent = ol.extent.createEmpty(); /** @type {?olx.FrameState} */ var frameState = null; if (size !== undefined && ol.size.hasArea(size) && view && view.isDef()) { @@ -1297,7 +1298,7 @@ ol.Map.prototype.renderFrame_ = function(time) { animate: false, attributions: {}, coordinateToPixelMatrix: this.coordinateToPixelMatrix_, - extent: null, + extent: extent, focus: !this.focus_ ? viewState.center : this.focus_, index: this.frameIndex_++, layerStates: layerStates, @@ -1329,7 +1330,7 @@ ol.Map.prototype.renderFrame_ = function(time) { preRenderFunctions.length = n; frameState.extent = ol.extent.getForViewAndSize(viewState.center, - viewState.resolution, viewState.rotation, frameState.size); + viewState.resolution, viewState.rotation, frameState.size, extent); } this.frameState_ = frameState;