Merge pull request #4836 from xiaoxiaobt/safari-legacy-fix

Allow xterm.js to run on legacy versions of Safari when Webgl2 support is explicitly enabled
This commit is contained in:
Daniel Imms
2023-11-02 09:32:41 -07:00
committed by GitHub
+11 -1
View File
@@ -11,6 +11,7 @@ import { EventEmitter, forwardEvent } from 'common/EventEmitter';
import { Disposable, toDisposable } from 'common/Lifecycle';
import { getSafariVersion, isSafari } from 'common/Platform';
import { ICoreService, IDecorationService, ILogService, IOptionsService } from 'common/services/Services';
import { IWebGL2RenderingContext } from './Types';
import { WebglRenderer } from './WebglRenderer';
import { setTraceLogger } from 'common/services/LogService';
@@ -31,7 +32,16 @@ export class WebglAddon extends Disposable implements ITerminalAddon , IWebglApi
private _preserveDrawingBuffer?: boolean
) {
if (isSafari && getSafariVersion() < 16) {
throw new Error('Webgl2 is only supported on Safari 16 and above');
// Perform an extra check to determine if Webgl2 is manually enabled in developer settings
const contextAttributes = {
antialias: false,
depth: false,
preserveDrawingBuffer: true
};
const gl = document.createElement('canvas').getContext('webgl2', contextAttributes) as IWebGL2RenderingContext;
if (!gl) {
throw new Error('Webgl2 is only supported on Safari 16 and above');
}
}
super();
}