File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ import { IColorSet } from 'browser/Types';
1010
1111export class WebglAddon implements ITerminalAddon {
1212 private _terminal ?: Terminal ;
13+ private _renderer ?: WebglRenderer ;
1314
1415 constructor (
1516 private _preserveDrawingBuffer ?: boolean
@@ -22,7 +23,8 @@ export class WebglAddon implements ITerminalAddon {
2223 this . _terminal = terminal ;
2324 const renderService : IRenderService = ( < any > terminal ) . _core . _renderService ;
2425 const colors : IColorSet = ( < any > terminal ) . _core . _colorManager . colors ;
25- renderService . setRenderer ( new WebglRenderer ( terminal , colors , this . _preserveDrawingBuffer ) ) ;
26+ this . _renderer = new WebglRenderer ( terminal , colors , this . _preserveDrawingBuffer ) ;
27+ renderService . setRenderer ( this . _renderer ) ;
2628 }
2729
2830 public dispose ( ) : void {
@@ -32,5 +34,10 @@ export class WebglAddon implements ITerminalAddon {
3234 const renderService : IRenderService = ( < any > this . _terminal ) . _core . _renderService ;
3335 renderService . setRenderer ( ( < any > this . _terminal ) . _core . _createRenderer ( ) ) ;
3436 renderService . onResize ( this . _terminal . cols , this . _terminal . rows ) ;
37+ this . _renderer = undefined ;
38+ }
39+
40+ public get textureAtlas ( ) : HTMLCanvasElement | undefined {
41+ return this . _renderer ?. textureAtlas ;
3542 }
3643}
Original file line number Diff line number Diff line change @@ -100,6 +100,10 @@ export class WebglRenderer extends Disposable implements IRenderer {
100100 super . dispose ( ) ;
101101 }
102102
103+ public get textureAtlas ( ) : HTMLCanvasElement | undefined {
104+ return this . _charAtlas ?. cacheCanvas ;
105+ }
106+
103107 public setColors ( colors : IColorSet ) : void {
104108 this . _colors = colors ;
105109 // Clear layers and force a full render
Original file line number Diff line number Diff line change @@ -86,9 +86,6 @@ export class WebglCharAtlas implements IDisposable {
8686 this . _tmpCanvas . width = this . _config . scaledCharWidth * 2 + TMP_CANVAS_GLYPH_PADDING * 2 ;
8787 this . _tmpCanvas . height = this . _config . scaledCharHeight + TMP_CANVAS_GLYPH_PADDING * 2 ;
8888 this . _tmpCtx = throwIfFalsy ( this . _tmpCanvas . getContext ( '2d' , { alpha : this . _config . allowTransparency } ) ) ;
89-
90- // This is useful for debugging
91- document . body . appendChild ( this . cacheCanvas ) ;
9289 }
9390
9491 public dispose ( ) : void {
Original file line number Diff line number Diff line change @@ -10,6 +10,8 @@ declare module 'xterm-addon-webgl' {
1010 * An xterm.js addon that provides search functionality.
1111 */
1212 export class WebglAddon implements ITerminalAddon {
13+ public textureAtlas ?: HTMLCanvasElement ;
14+
1315 constructor ( preserveDrawingBuffer ?: boolean ) ;
1416
1517 /**
Original file line number Diff line number Diff line change @@ -343,7 +343,15 @@ function initAddons(term: TerminalType): void {
343343 if ( checkbox . checked ) {
344344 addon . instance = new addon . ctor ( ) ;
345345 term . loadAddon ( addon . instance ) ;
346+ if ( name === 'webgl' ) {
347+ setTimeout ( ( ) => {
348+ document . body . appendChild ( ( addon . instance as WebglAddon ) . textureAtlas ) ;
349+ } , 0 ) ;
350+ }
346351 } else {
352+ if ( name === 'webgl' ) {
353+ document . body . removeChild ( ( addon . instance as WebglAddon ) . textureAtlas ) ;
354+ }
347355 addon . instance ! . dispose ( ) ;
348356 addon . instance = undefined ;
349357 }
You can’t perform that action at this time.
0 commit comments