@@ -250,7 +250,11 @@ function createTerminal(): void {
250250 addons . serialize . instance = new SerializeAddon ( ) ;
251251 addons . fit . instance = new FitAddon ( ) ;
252252 addons . unicode11 . instance = new Unicode11Addon ( ) ;
253- addons . webgl . instance = new WebglAddon ( ) ;
253+ try { // try to start with webgl renderer (might throw on older safari/webkit)
254+ addons . webgl . instance = new WebglAddon ( ) ;
255+ } catch ( e ) {
256+ console . warn ( e ) ;
257+ }
254258 addons [ 'web-links' ] . instance = new WebLinksAddon ( ) ;
255259 typedTerm . loadAddon ( addons . fit . instance ) ;
256260 typedTerm . loadAddon ( addons . search . instance ) ;
@@ -274,18 +278,22 @@ function createTerminal(): void {
274278
275279 addons . fit . instance ! . fit ( ) ;
276280
277- // try to start with webgl renderer (might throw on older safari/webkit)
278- try {
279- typedTerm . loadAddon ( addons . webgl . instance ) ;
280- term . open ( terminalContainer ) ;
281- setTextureAtlas ( addons . webgl . instance . textureAtlas ) ;
282- addons . webgl . instance . onChangeTextureAtlas ( e => setTextureAtlas ( e ) ) ;
283- addons . webgl . instance . onAddTextureAtlasCanvas ( e => appendTextureAtlas ( e ) ) ;
284- addons . webgl . instance . onRemoveTextureAtlasCanvas ( e => removeTextureAtlas ( e ) ) ;
285- } catch ( e ) {
286- console . log ( e ) ;
287- addons . webgl . instance . dispose ( ) ;
288- addons . webgl . instance = undefined ;
281+ if ( addons . webgl . instance ) {
282+ try {
283+ typedTerm . loadAddon ( addons . webgl . instance ) ;
284+ term . open ( terminalContainer ) ;
285+ setTextureAtlas ( addons . webgl . instance . textureAtlas ) ;
286+ addons . webgl . instance . onChangeTextureAtlas ( e => setTextureAtlas ( e ) ) ;
287+ addons . webgl . instance . onAddTextureAtlasCanvas ( e => appendTextureAtlas ( e ) ) ;
288+ addons . webgl . instance . onRemoveTextureAtlasCanvas ( e => removeTextureAtlas ( e ) ) ;
289+ } catch ( e ) {
290+ console . warn ( 'error during loading webgl addon:' , e ) ;
291+ addons . webgl . instance . dispose ( ) ;
292+ addons . webgl . instance = undefined ;
293+ }
294+ }
295+ if ( ! typedTerm . element ) {
296+ // webgl loading failed for some reason, attach with DOM renderer
289297 term . open ( terminalContainer ) ;
290298 }
291299
0 commit comments