From e55f655015babf960565f9d398e00b03469dd525 Mon Sep 17 00:00:00 2001 From: Erik Onarheim Date: Mon, 19 Feb 2024 17:17:42 -0600 Subject: [PATCH] fix: Engine.dispose() --- src/engine/Engine.ts | 6 ++++++ src/engine/Screen.ts | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/engine/Engine.ts b/src/engine/Engine.ts index c6b6776ae..baeb7f281 100644 --- a/src/engine/Engine.ts +++ b/src/engine/Engine.ts @@ -1043,11 +1043,17 @@ O|===|* >________________>\n\ } private _disposed = false; + /** + * Attempts to completely clean up excalibur resources, including removing the canvas from the dom. + * + * To start again you will need to new up an Engine. + */ public dispose() { if (!this._disposed) { this._disposed = true; this.stop(); this.input.toggleEnabled(false); + this.canvas.parentNode.removeChild(this.canvas); this.canvas = null; this.screen.dispose(); this.graphicsContext.dispose(); diff --git a/src/engine/Screen.ts b/src/engine/Screen.ts index 9383c6f07..e32be8aa2 100644 --- a/src/engine/Screen.ts +++ b/src/engine/Screen.ts @@ -313,7 +313,9 @@ export class Screen { if (!this._isDisposed) { // Clean up handlers this._isDisposed = true; + this.events.clear(); this._browser.window.off('resize', this._resizeHandler); + this._browser.window.clear(); if (this._resizeObserver) { this._resizeObserver.disconnect(); }