map renderer unregisters listeners on dispose

This commit is contained in:
Éric Lemoine
2012-08-14 07:44:25 +02:00
parent f0ecf858c8
commit e7696dd6aa

View File

@@ -1,5 +1,3 @@
// FIXME unregister listeners when disposed
goog.provide('ol.MapRenderer'); goog.provide('ol.MapRenderer');
goog.require('goog.Disposable'); goog.require('goog.Disposable');
@@ -57,11 +55,6 @@ ol.MapRenderer = function(target, map) {
*/ */
this.freezeRenderingCount_ = 0; this.freezeRenderingCount_ = 0;
/**
* @private
* @type {Array.<number>}
*/
this.layersListenerKeys_ = null;
/** /**
* @protected * @protected
@@ -69,29 +62,42 @@ ol.MapRenderer = function(target, map) {
*/ */
this.layerRenderers = {}; this.layerRenderers = {};
goog.events.listen(map, /**
ol.Object.getChangedEventType(ol.MapProperty.BACKGROUND_COLOR), * @private
this.handleBackgroundColorChanged, false, this); * @type {Array.<number>}
*/
this.layersListenerKeys_ = null;
/**
* @private
* @type {Array.<number>}
*/
this.mapListenerKeys_ = [
goog.events.listen(
map, ol.Object.getChangedEventType(ol.MapProperty.BACKGROUND_COLOR),
this.handleBackgroundColorChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol.Object.getChangedEventType(ol.MapProperty.CENTER), map, ol.Object.getChangedEventType(ol.MapProperty.CENTER),
this.handleCenterChanged, false, this); this.handleCenterChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol.Object.getChangedEventType(ol.MapProperty.LAYERS), map, ol.Object.getChangedEventType(ol.MapProperty.LAYERS),
this.handleLayersChanged, false, this); this.handleLayersChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol.Object.getChangedEventType(ol.MapProperty.RESOLUTION), map, ol.Object.getChangedEventType(ol.MapProperty.RESOLUTION),
this.handleResolutionChanged, false, this); this.handleResolutionChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol.Object.getChangedEventType(ol.MapProperty.ROTATION), map, ol.Object.getChangedEventType(ol.MapProperty.ROTATION),
this.handleRotationChanged, false, this); this.handleRotationChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol.Object.getChangedEventType(ol.MapProperty.SIZE), map, ol.Object.getChangedEventType(ol.MapProperty.SIZE),
this.handleSizeChanged, false, this); this.handleSizeChanged, false, this)
];
}; };
goog.inherits(ol.MapRenderer, goog.Disposable); goog.inherits(ol.MapRenderer, goog.Disposable);
@@ -103,6 +109,8 @@ ol.MapRenderer.prototype.disposeInternal = function() {
goog.object.forEach(this.layerRenderers, function(layerRenderer) { goog.object.forEach(this.layerRenderers, function(layerRenderer) {
goog.dispose(layerRenderer); goog.dispose(layerRenderer);
}); });
goog.array.forEach(this.mapListenerKeys_, goog.events.unlistenByKey);
goog.array.forEach(this.layersListenerKeys_, goog.events.unlistenByKey);
goog.base(this, 'disposeInternal'); goog.base(this, 'disposeInternal');
}; };