clean up bound event handlers in webgldrawer.destroy

This commit is contained in:
Tom 2024-02-12 18:05:33 -05:00
parent 6e4914ada3
commit 02898cfc17

View File

@ -93,8 +93,10 @@
this._backupCanvasDrawer = null; this._backupCanvasDrawer = null;
// Add listeners for events that require modifying the scene or camera // Add listeners for events that require modifying the scene or camera
this.viewer.addHandler("tile-ready", ev => this._tileReadyHandler(ev)); this._boundToTileReady = ev => this._tileReadyHandler(ev);
this.viewer.addHandler("image-unloaded", ev => this._imageUnloadedHandler(ev)); this._boundToImageUnloaded = ev => this._imageUnloadedHandler(ev);
this.viewer.addHandler("tile-ready", this._boundToTileReady);
this.viewer.addHandler("image-unloaded", this._boundToImageUnloaded);
// Reject listening for the tile-drawing and tile-drawn events, which this drawer does not fire // Reject listening for the tile-drawing and tile-drawn events, which this drawer does not fire
this.viewer.rejectEventHandler("tile-drawn", "The WebGLDrawer does not raise the tile-drawn event"); this.viewer.rejectEventHandler("tile-drawn", "The WebGLDrawer does not raise the tile-drawn event");
@ -155,6 +157,10 @@
ext.loseContext(); ext.loseContext();
} }
// unbind our event listeners from the viewer
this.viewer.removeHandler("tile-ready", this._boundToTileReady);
this.viewer.removeHandler("image-unloaded", this._boundToImageUnloaded);
// set our webgl context reference to null to enable garbage collection // set our webgl context reference to null to enable garbage collection
this._gl = null; this._gl = null;