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.

View File

@@ -3,8 +3,6 @@ goog.provide('ol.renderer.Map');
goog.require('goog.Disposable');
goog.require('goog.asserts');
goog.require('goog.dispose');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.functions');
goog.require('goog.object');
goog.require('goog.vec.Mat4');
@@ -42,12 +40,6 @@ ol.renderer.Map = function(container, map) {
*/
this.layerRenderers_ = {};
/**
* @private
* @type {Object.<string, ?number>}
*/
this.layerRendererChangeListenKeys_ = {};
};
goog.inherits(ol.renderer.Map, goog.Disposable);
@@ -101,8 +93,6 @@ ol.renderer.Map.prototype.disposeInternal = function() {
goog.object.forEach(this.layerRenderers_, function(layerRenderer) {
goog.dispose(layerRenderer);
});
goog.object.forEach(
this.layerRendererChangeListenKeys_, goog.events.unlistenByKey);
goog.base(this, 'disposeInternal');
};
@@ -125,9 +115,6 @@ ol.renderer.Map.prototype.getLayerRenderer = function(layer) {
} else {
var layerRenderer = this.createLayerRenderer(layer);
this.layerRenderers_[layerKey] = layerRenderer;
this.layerRendererChangeListenKeys_[layerKey] = goog.events.listen(
layerRenderer, goog.events.EventType.CHANGE,
this.handleLayerRendererChange_, false, this);
return layerRenderer;
}
};
@@ -150,15 +137,6 @@ ol.renderer.Map.prototype.getMap = function() {
};
/**
* @param {goog.events.Event} event Event.
* @private
*/
ol.renderer.Map.prototype.handleLayerRendererChange_ = function(event) {
this.getMap().render();
};
/**
* @param {string} layerKey Layer key.
* @return {ol.renderer.Layer} Layer renderer.
@@ -168,9 +146,6 @@ ol.renderer.Map.prototype.removeLayerRendererByKey_ = function(layerKey) {
goog.asserts.assert(layerKey in this.layerRenderers_);
var layerRenderer = this.layerRenderers_[layerKey];
delete this.layerRenderers_[layerKey];
goog.asserts.assert(layerKey in this.layerRendererChangeListenKeys_);
goog.events.unlistenByKey(this.layerRendererChangeListenKeys_[layerKey]);
delete this.layerRendererChangeListenKeys_[layerKey];
return layerRenderer;
};

View File

@@ -193,7 +193,7 @@ ol.renderer.webgl.Layer.prototype.getProjectionMatrix = function() {
*/
ol.renderer.webgl.Layer.prototype.handleLayerBrightnessChange = function() {
this.updateBrightnessMatrix_();
this.dispatchChangeEvent();
this.renderIfReadyAndVisible();
};
@@ -202,7 +202,7 @@ ol.renderer.webgl.Layer.prototype.handleLayerBrightnessChange = function() {
*/
ol.renderer.webgl.Layer.prototype.handleLayerContrastChange = function() {
this.updateContrastMatrix_();
this.dispatchChangeEvent();
this.renderIfReadyAndVisible();
};
@@ -211,7 +211,7 @@ ol.renderer.webgl.Layer.prototype.handleLayerContrastChange = function() {
*/
ol.renderer.webgl.Layer.prototype.handleLayerHueChange = function() {
this.updateHueMatrix_();
this.dispatchChangeEvent();
this.renderIfReadyAndVisible();
};
@@ -220,7 +220,7 @@ ol.renderer.webgl.Layer.prototype.handleLayerHueChange = function() {
*/
ol.renderer.webgl.Layer.prototype.handleLayerSaturationChange = function() {
this.updateSaturationMatrix_();
this.dispatchChangeEvent();
this.renderIfReadyAndVisible();
};