Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
96f91be3
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
96f91be3
编写于
11月 19, 2019
作者:
D
Daniel Imms
提交者:
GitHub
11月 19, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #84181 from solomatov/pty_bug
Fix bug with hanged pseudoterminal
上级
8e822e10
7a184104
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
14 addition
and
10 deletion
+14
-10
src/vs/workbench/api/common/extHostTerminalService.ts
src/vs/workbench/api/common/extHostTerminalService.ts
+14
-10
未找到文件。
src/vs/workbench/api/common/extHostTerminalService.ts
浏览文件 @
96f91be3
...
...
@@ -288,6 +288,7 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ
protected
_activeTerminal
:
ExtHostTerminal
|
undefined
;
protected
_terminals
:
ExtHostTerminal
[]
=
[];
protected
_terminalProcesses
:
{
[
id
:
number
]:
ITerminalChildProcess
}
=
{};
protected
_extensionTerminalAwaitingStart
:
{
[
id
:
number
]:
{
initialDimensions
:
ITerminalDimensionsDto
|
undefined
}
|
undefined
}
=
{};
protected
_getTerminalPromises
:
{
[
id
:
number
]:
Promise
<
ExtHostTerminal
>
}
=
{};
public
get
activeTerminal
():
ExtHostTerminal
|
undefined
{
return
this
.
_activeTerminal
;
}
...
...
@@ -462,17 +463,13 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ
}
await
openPromise
;
// Processes should be initialized here for normal virtual process terminals, however for
// tasks they are responsible for attaching the virtual process to a terminal so this
// function may be called before tasks is able to attach to the terminal.
let
retries
=
5
;
while
(
retries
--
>
0
)
{
if
(
this
.
_terminalProcesses
[
id
])
{
(
this
.
_terminalProcesses
[
id
]
as
ExtHostPseudoterminal
).
startSendingEvents
(
initialDimensions
);
return
;
}
await
timeout
(
50
);
if
(
this
.
_terminalProcesses
[
id
])
{
(
this
.
_terminalProcesses
[
id
]
as
ExtHostPseudoterminal
).
startSendingEvents
(
initialDimensions
);
}
else
{
// Defer startSendingEvents call to when _setupExtHostProcessListeners is called
this
.
_extensionTerminalAwaitingStart
[
id
]
=
{
initialDimensions
};
}
}
protected
_setupExtHostProcessListeners
(
id
:
number
,
p
:
ITerminalChildProcess
):
void
{
...
...
@@ -487,6 +484,12 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ
p
.
onProcessOverrideDimensions
(
e
=>
this
.
_proxy
.
$sendOverrideDimensions
(
id
,
e
));
}
this
.
_terminalProcesses
[
id
]
=
p
;
const
awaitingStart
=
this
.
_extensionTerminalAwaitingStart
[
id
];
if
(
awaitingStart
&&
p
instanceof
ExtHostPseudoterminal
)
{
p
.
startSendingEvents
(
awaitingStart
.
initialDimensions
);
delete
this
.
_extensionTerminalAwaitingStart
[
id
];
}
}
public
$acceptProcessInput
(
id
:
number
,
data
:
string
):
void
{
...
...
@@ -525,6 +528,7 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ
// Remove process reference
delete
this
.
_terminalProcesses
[
id
];
delete
this
.
_extensionTerminalAwaitingStart
[
id
];
// Send exit event to main side
this
.
_proxy
.
$sendProcessExit
(
id
,
exitCode
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录