🐛 修复开始 webgl 终端显示错误.
This commit is contained in:
@@ -33,10 +33,14 @@ export default class SshSession extends BaseSession implements ISshSession {
|
||||
|
||||
private readonly addons: XtermAddons;
|
||||
|
||||
private readonly canUseWebgl: boolean;
|
||||
|
||||
constructor(tab: TerminalPanelTabItem,
|
||||
channel: ITerminalChannel) {
|
||||
channel: ITerminalChannel,
|
||||
canUseWebgl: boolean) {
|
||||
super(PanelSessionType.SSH.type, tab);
|
||||
this.channel = channel;
|
||||
this.canUseWebgl = canUseWebgl;
|
||||
this.status = TerminalStatus.CONNECTING;
|
||||
this.inst = undefined as unknown as Terminal;
|
||||
this.handler = undefined as unknown as ISshSessionHandler;
|
||||
@@ -173,7 +177,7 @@ export default class SshSession extends BaseSession implements ISshSession {
|
||||
if (preference.pluginsSetting.enableWeblinkPlugin) {
|
||||
this.addons.weblink = new WebLinksAddon();
|
||||
}
|
||||
if (preference.pluginsSetting.enableWebglPlugin) {
|
||||
if (preference.pluginsSetting.enableWebglPlugin && this.canUseWebgl) {
|
||||
// WebGL 渲染插件
|
||||
this.addons.webgl = new WebglAddon(true);
|
||||
} else {
|
||||
|
||||
@@ -37,8 +37,14 @@ export default class TerminalSessionManager implements ITerminalSessionManager {
|
||||
async openSsh(tab: TerminalPanelTabItem, domRef: XtermDomRef) {
|
||||
// 初始化客户端
|
||||
await this.initChannel();
|
||||
// 获取会话数量
|
||||
const sshSessionLen = Object.values(this.sessions)
|
||||
.filter(s => s?.type === PanelSessionType.SSH.type)
|
||||
.length;
|
||||
// 检查 webgl 数量
|
||||
const canUseWebgl = (sshSessionLen || 0) <= (navigator.hardwareConcurrency || 0) / 2;
|
||||
// 新建会话
|
||||
const session = new SshSession(tab, this.channel);
|
||||
const session = new SshSession(tab, this.channel, canUseWebgl);
|
||||
// 初始化
|
||||
session.init(domRef);
|
||||
// 等待前端渲染完成
|
||||
|
||||
Reference in New Issue
Block a user