Call render and requestRenderFrame directly instead of using changed events

This commit is contained in:
Tom Payne
2013-04-18 18:58:59 +02:00
parent f274cc99f6
commit 85a95a0036
3 changed files with 26 additions and 42 deletions

View File

@@ -72,14 +72,6 @@ ol.renderer.Layer = function(mapRenderer, layer) {
goog.inherits(ol.renderer.Layer, ol.Object);
/**
* @protected
*/
ol.renderer.Layer.prototype.dispatchChangeEvent = function() {
this.dispatchEvent(goog.events.EventType.CHANGE);
};
/**
* @protected
* @return {ol.layer.Layer} Layer.
@@ -133,7 +125,7 @@ ol.renderer.Layer.prototype.handleLayerHueChange = goog.nullFunction;
ol.renderer.Layer.prototype.handleImageChange = function(event) {
var image = /** @type {ol.Image} */ (event.target);
if (image.getState() === ol.ImageState.LOADED) {
this.getMap().render();
this.renderIfReadyAndVisible();
}
};
@@ -142,7 +134,7 @@ ol.renderer.Layer.prototype.handleImageChange = function(event) {
* @protected
*/
ol.renderer.Layer.prototype.handleLayerLoad = function() {
this.dispatchChangeEvent();
this.renderIfReadyAndVisible();
};
@@ -150,7 +142,7 @@ ol.renderer.Layer.prototype.handleLayerLoad = function() {
* @protected
*/
ol.renderer.Layer.prototype.handleLayerOpacityChange = function() {
this.dispatchChangeEvent();
this.renderIfReadyAndVisible();
};
@@ -164,7 +156,10 @@ ol.renderer.Layer.prototype.handleLayerSaturationChange = goog.nullFunction;
* @protected
*/
ol.renderer.Layer.prototype.handleLayerVisibleChange = function() {
this.dispatchChangeEvent();
var layer = this.getLayer();
if (layer.isReady()) {
this.getMap().render();
}
};
@@ -176,7 +171,10 @@ ol.renderer.Layer.prototype.handleLayerVisibleChange = function() {
ol.renderer.Layer.prototype.handleTileChange_ = function(event) {
var tile = /** @type {ol.Tile} */ (event.target);
if (tile.getState() === ol.TileState.LOADED) {
this.getMap().requestRenderFrame();
var layer = this.getLayer();
if (layer.getVisible() && layer.isReady()) {
this.getMap().requestRenderFrame();
}
}
};
@@ -188,6 +186,17 @@ ol.renderer.Layer.prototype.handleTileChange_ = function(event) {
ol.renderer.Layer.prototype.renderFrame = goog.abstractMethod;
/**
* @protected
*/
ol.renderer.Layer.prototype.renderIfReadyAndVisible = function() {
var layer = this.getLayer();
if (layer.getVisible() && layer.isReady()) {
this.getMap().render();
}
};
/**
* @param {ol.FrameState} frameState Frame state.
* @param {ol.source.TileSource} tileSource Tile source.