Disable WebGL2 on Safari (#799)

This commit is contained in:
Maxim Devaev
2021-10-23 14:33:43 +03:00
committed by GitHub
parent a5f0765d45
commit 52adcc4a76

View File

@@ -217,11 +217,31 @@ export class Xterm extends Component<Props> {
}
};
const isSafari = () => {
// https://stackoverflow.com/questions/9847580
if (/constructor/i.test(String(window["HTMLElement"]))) {
return true;
}
if (!window.top["safari"]) {
return false;
}
return String(window.top["safari"].pushNotification) === "[object SafariRemoteNotification]";
};
const isIos = () => {
// https://stackoverflow.com/questions/9038625
// https://github.com/lancedikson/bowser/issues/329
return !!navigator.platform && (
/iPad|iPhone|iPod/.test(navigator.platform)
|| (navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1 && !window["MSStream"])
);
};
const { terminal } = this;
switch (value) {
case 'webgl':
if (this.webglAddon) return;
if (isWebGL2Available()) {
if (isWebGL2Available() && !isSafari() && !isIos()) {
this.webglAddon = new WebglAddon();
terminal.loadAddon(this.webglAddon);
console.log(`[ttyd] WebGL renderer enabled`);