From 8b5a1331068a6bfb9d2face5c3f16c64fed8f8d7 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 6 Apr 2020 05:32:11 -0700 Subject: [PATCH 1/2] Pause cursor render layer before resuming Fixes #2764 --- addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts | 3 +++ src/browser/renderer/CursorRenderLayer.ts | 3 +++ 2 files changed, 6 insertions(+) diff --git a/addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts b/addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts index 2ade8007..35bd27bb 100644 --- a/addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts +++ b/addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts @@ -360,6 +360,9 @@ class CursorBlinkStateManager { } public resume(terminal: Terminal): void { + // Clear out any existing timers just in case + this.pause(); + this._animationTimeRestarted = undefined; this._restartInterval(); this.restartBlinkAnimation(terminal); diff --git a/src/browser/renderer/CursorRenderLayer.ts b/src/browser/renderer/CursorRenderLayer.ts index 8b25667b..dc58f2f7 100644 --- a/src/browser/renderer/CursorRenderLayer.ts +++ b/src/browser/renderer/CursorRenderLayer.ts @@ -364,6 +364,9 @@ class CursorBlinkStateManager { } public resume(): void { + // Clear out any existing timers just in case + this.pause(); + this._animationTimeRestarted = undefined; this._restartInterval(); this.restartBlinkAnimation(); From 59d28e7b99f0978a60f4428a7c69ff4937b62d93 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Mon, 6 Apr 2020 05:33:09 -0700 Subject: [PATCH 2/2] Use browser types instead of nodejs --- addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts | 4 ++-- src/browser/renderer/CursorRenderLayer.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts b/addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts index 35bd27bb..310236b6 100644 --- a/addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts +++ b/addons/xterm-addon-webgl/src/renderLayer/CursorRenderLayer.ts @@ -302,7 +302,7 @@ class CursorBlinkStateManager { // the regular interval is setup in order to support restarting the blink // animation in a lightweight way (without thrashing clearInterval and // setInterval). - this._blinkStartTimeout = setTimeout(() => { + this._blinkStartTimeout = window.setTimeout(() => { // Check if another animation restart was requested while this was being // started if (this._animationTimeRestarted) { @@ -322,7 +322,7 @@ class CursorBlinkStateManager { }); // Setup the blink interval - this._blinkInterval = setInterval(() => { + this._blinkInterval = window.setInterval(() => { // Adjust the animation time if it was restarted if (this._animationTimeRestarted) { // calc time diff diff --git a/src/browser/renderer/CursorRenderLayer.ts b/src/browser/renderer/CursorRenderLayer.ts index dc58f2f7..607180ae 100644 --- a/src/browser/renderer/CursorRenderLayer.ts +++ b/src/browser/renderer/CursorRenderLayer.ts @@ -306,7 +306,7 @@ class CursorBlinkStateManager { // the regular interval is setup in order to support restarting the blink // animation in a lightweight way (without thrashing clearInterval and // setInterval). - this._blinkStartTimeout = setTimeout(() => { + this._blinkStartTimeout = window.setTimeout(() => { // Check if another animation restart was requested while this was being // started if (this._animationTimeRestarted) { @@ -326,7 +326,7 @@ class CursorBlinkStateManager { }); // Setup the blink interval - this._blinkInterval = setInterval(() => { + this._blinkInterval = window.setInterval(() => { // Adjust the animation time if it was restarted if (this._animationTimeRestarted) { // calc time diff