From bd661fdb071db5adb132722f1f946c32c0320ffe Mon Sep 17 00:00:00 2001 From: Simon Lamon Date: Sun, 9 Oct 2022 11:29:33 +0000 Subject: [PATCH] Fix demo again --- addons/xterm-addon-canvas/src/CanvasAddon.ts | 4 +++- addons/xterm-addon-webgl/src/WebglAddon.ts | 4 +++- demo/client.ts | 15 ++++++++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/addons/xterm-addon-canvas/src/CanvasAddon.ts b/addons/xterm-addon-canvas/src/CanvasAddon.ts index 1dc607e5..dcd35704 100644 --- a/addons/xterm-addon-canvas/src/CanvasAddon.ts +++ b/addons/xterm-addon-canvas/src/CanvasAddon.ts @@ -25,7 +25,9 @@ export class CanvasAddon extends Disposable implements ITerminalAddon { public activate(terminal: Terminal): void { const core = (terminal as any)._core; if (!terminal.element) { - this.register(core.onWillOpen(() => this.activate(terminal))); + this.register(toDisposable(() => { + core.onWillOpen(() => this.activate(terminal)); + })); return; } diff --git a/addons/xterm-addon-webgl/src/WebglAddon.ts b/addons/xterm-addon-webgl/src/WebglAddon.ts index 71487315..538713c2 100644 --- a/addons/xterm-addon-webgl/src/WebglAddon.ts +++ b/addons/xterm-addon-webgl/src/WebglAddon.ts @@ -33,7 +33,9 @@ export class WebglAddon extends Disposable implements ITerminalAddon { } const core = (terminal as any)._core; if (!terminal.element) { - this.register(core.onWillOpen(() => this.activate(terminal))); + this.register(toDisposable(() => { + core.onWillOpen(() => this.activate(terminal)); + })); return; } this._terminal = terminal; diff --git a/demo/client.ts b/demo/client.ts index ea55d6d9..3228bd7f 100644 --- a/demo/client.ts +++ b/demo/client.ts @@ -271,11 +271,16 @@ function createTerminal(): void { socketURL = protocol + location.hostname + ((location.port) ? (':' + location.port) : '') + '/terminals/'; addons.fit.instance!.fit(); - typedTerm.loadAddon(addons.webgl.instance); - setTimeout(() => { - addTextureAtlas(addons.webgl.instance.textureAtlas); - addons.webgl.instance.onChangeTextureAtlas(e => addTextureAtlas(e)); - }, 0); + try { // try-catch to allow the demo to load if webgl is not supported + typedTerm.loadAddon(addons.webgl.instance); + setTimeout(() => { + addTextureAtlas(addons.webgl.instance.textureAtlas); + addons.webgl.instance.onChangeTextureAtlas(e => addTextureAtlas(e)); + }, 0); + } + catch { + addons.webgl.instance = undefined; + } term.open(terminalContainer); term.focus();