From 4f5154fd21b2cecdaf72098d4ac24f65ff1a59d3 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Sat, 8 Oct 2022 11:56:29 -0700 Subject: [PATCH] Ensure stale bitmap is not used when drawing new characters This would cause a problem where the first time a glyph is used it would not be visible because it was using the old invalidated bitmap. --- addons/xterm-addon-canvas/src/BaseRenderLayer.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/xterm-addon-canvas/src/BaseRenderLayer.ts b/addons/xterm-addon-canvas/src/BaseRenderLayer.ts index b18bb209b8..2990fe033e 100644 --- a/addons/xterm-addon-canvas/src/BaseRenderLayer.ts +++ b/addons/xterm-addon-canvas/src/BaseRenderLayer.ts @@ -357,10 +357,6 @@ export abstract class BaseRenderLayer extends Disposable implements IRenderLayer * the character atlas to reduce draw time. */ protected _drawChars(cell: ICellData, x: number, y: number): void { - if (this._charAtlas.hasCanvasChanged) { - this._bitmapGenerator?.refresh(); - this._charAtlas.hasCanvasChanged = false; - } const chars = cell.getChars(); this._cellColorResolver.resolve(cell, x, y); let glyph: IRasterizedGlyph; @@ -372,6 +368,10 @@ export abstract class BaseRenderLayer extends Disposable implements IRenderLayer this._ctx.save(); this._clipRow(y); // Draw the image, use the bitmap if it's available + if (this._charAtlas.hasCanvasChanged) { + this._bitmapGenerator?.refresh(); + this._charAtlas.hasCanvasChanged = false; + } this._ctx.drawImage( this._bitmapGenerator?.bitmap || this._charAtlas!.cacheCanvas, glyph.texturePosition.x,