Port DOM renderer to request render frame architecture

This commit is contained in:
Tom Payne
2013-01-03 14:51:15 +01:00
parent b386c38111
commit 7a36793776
2 changed files with 18 additions and 40 deletions
+10 -23
View File
@@ -135,11 +135,7 @@ ol.renderer.dom.Map.prototype.createLayerRenderer = function(layer) {
*/ */
ol.renderer.dom.Map.prototype.handleCenterChanged = function() { ol.renderer.dom.Map.prototype.handleCenterChanged = function() {
goog.base(this, 'handleCenterChanged'); goog.base(this, 'handleCenterChanged');
var map = this.getMap(); this.getMap().render();
if (!map.isDef()) {
return;
}
map.render();
}; };
@@ -148,11 +144,7 @@ ol.renderer.dom.Map.prototype.handleCenterChanged = function() {
*/ */
ol.renderer.dom.Map.prototype.handleResolutionChanged = function() { ol.renderer.dom.Map.prototype.handleResolutionChanged = function() {
goog.base(this, 'handleResolutionChanged'); goog.base(this, 'handleResolutionChanged');
var map = this.getMap(); this.getMap().render();
if (!map.isDef()) {
return;
}
map.render();
}; };
@@ -160,11 +152,8 @@ ol.renderer.dom.Map.prototype.handleResolutionChanged = function() {
* @inheritDoc * @inheritDoc
*/ */
ol.renderer.dom.Map.prototype.handleRotationChanged = function() { ol.renderer.dom.Map.prototype.handleRotationChanged = function() {
var map = this.getMap(); goog.base(this, 'handleRotationChanged');
if (!map.isDef()) { this.getMap().render();
return;
}
map.render();
}; };
@@ -173,11 +162,7 @@ ol.renderer.dom.Map.prototype.handleRotationChanged = function() {
*/ */
ol.renderer.dom.Map.prototype.handleSizeChanged = function() { ol.renderer.dom.Map.prototype.handleSizeChanged = function() {
goog.base(this, 'handleSizeChanged'); goog.base(this, 'handleSizeChanged');
var map = this.getMap(); this.getMap().render();
if (!map.isDef()) {
return;
}
map.render();
}; };
@@ -227,14 +212,16 @@ ol.renderer.dom.Map.prototype.renderFrame = function(time) {
this.renderedRotation_ = mapRotation; this.renderedRotation_ = mapRotation;
this.renderedSize_ = mapSize; this.renderedSize_ = mapSize;
var animate = false; var requestRenderFrame = false;
this.forEachReadyVisibleLayer(function(layer, layerRenderer) { this.forEachReadyVisibleLayer(function(layer, layerRenderer) {
if (layerRenderer.renderFrame(time)) { if (layerRenderer.renderFrame(time)) {
animate = true; requestRenderFrame = true;
} }
}); });
return animate; if (requestRenderFrame) {
map.requestRenderFrame();
}
}; };
+8 -17
View File
@@ -86,16 +86,6 @@ ol.renderer.dom.TileLayer.prototype.removeExtraTiles_ =
}; };
/**
* @param {goog.events.Event} event Tile change event.
* @private
*/
ol.renderer.dom.TileLayer.prototype.handleTileChange_ = function(event) {
goog.asserts.assert(event.target.getState() == ol.TileState.LOADED);
this.getMap().render();
};
/** /**
* @inheritDoc * @inheritDoc
*/ */
@@ -125,6 +115,7 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = function(time) {
var tileRange = var tileRange =
tileGrid.getTileRangeForExtentAndResolution(mapExtent, mapResolution); tileGrid.getTileRangeForExtentAndResolution(mapExtent, mapResolution);
var allTilesLoaded = true;
// first pass through the tile range to determine all the tiles needed // first pass through the tile range to determine all the tiles needed
tileRange.forEachTileCoord(z, function(tileCoord) { tileRange.forEachTileCoord(z, function(tileCoord) {
@@ -136,17 +127,15 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = function(time) {
var key = tile.tileCoord.toString(); var key = tile.tileCoord.toString();
var state = tile.getState(); var state = tile.getState();
if (state == ol.TileState.LOADED) { if (state == ol.TileState.IDLE) {
tile.load();
} else if (state == ol.TileState.LOADED) {
tilesToDrawByZ[z][key] = tile; tilesToDrawByZ[z][key] = tile;
return; return;
} else {
if (state != ol.TileState.LOADING) {
goog.events.listen(tile, goog.events.EventType.CHANGE,
this.handleTileChange_, false, this);
tile.load();
}
} }
allTilesLoaded = false;
/** /**
* Look for already loaded tiles at alternate z that can serve as * Look for already loaded tiles at alternate z that can serve as
* placeholders until tiles at the current z have loaded. * placeholders until tiles at the current z have loaded.
@@ -233,4 +222,6 @@ ol.renderer.dom.TileLayer.prototype.renderFrame = function(time) {
this.renderedMapResolution_ = mapResolution; this.renderedMapResolution_ = mapResolution;
this.removeExtraTiles_(tilesToDrawByZ); this.removeExtraTiles_(tilesToDrawByZ);
return !allTilesLoaded;
}; };