Skip to content

Commit 9a6996a

Browse files
committed
Fix terminal not restoring after replay
1 parent aa91e24 commit 9a6996a

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

src/vs/workbench/contrib/terminal/browser/terminalService.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -296,10 +296,7 @@ export class TerminalService implements ITerminalService {
296296
mark('code/terminal/didReconnect');
297297
mark('code/terminal/willReplay');
298298
const instances = await this._reconnectedTerminalGroups?.then(groups => groups.map(e => e.terminalInstances).flat()) ?? [];
299-
await Promise.all(instances.map(e => new Promise<void>(r => Event.once(e.onProcessReplayComplete)(() => {
300-
mark(`code/terminal/replay/${e.shellLaunchConfig.attachPersistentProcess?.id}`);
301-
r();
302-
}))));
299+
await Promise.all(instances.map(e => new Promise<void>(r => Event.once(e.onProcessReplayComplete)(r))));
303300
mark('code/terminal/didReplay');
304301
for (const backend of this._terminalInstanceService.getRegisteredBackends()) {
305302
mark('code/terminal/willGetPerformanceMarks');
@@ -469,13 +466,12 @@ export class TerminalService implements ITerminalService {
469466

470467
private _recreateTerminalGroups(layoutInfo?: ITerminalsLayoutInfo): Promise<ITerminalGroup[]> {
471468
const groupPromises: Promise<ITerminalGroup | undefined>[] = [];
472-
let reconnectCounter = 0;
473469
let activeGroup: Promise<ITerminalGroup | undefined> | undefined;
474470
if (layoutInfo) {
475471
for (const tabLayout of layoutInfo.tabs) {
476472
const terminalLayouts = tabLayout.terminals.filter(t => t.terminal && t.terminal.isOrphan);
477473
if (terminalLayouts.length) {
478-
reconnectCounter += terminalLayouts.length;
474+
this._restoredGroupCount += terminalLayouts.length;
479475
const promise = this._recreateTerminalGroup(tabLayout, terminalLayouts);
480476
groupPromises.push(promise);
481477
if (tabLayout.isActive) {

src/vs/workbench/contrib/terminal/electron-sandbox/localPty.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { Disposable } from 'vs/base/common/lifecycle';
88
import { IProcessDataEvent, ITerminalChildProcess, ITerminalLaunchError, IProcessProperty, IProcessPropertyMap, ProcessPropertyType, IProcessReadyEvent, ILocalPtyService } from 'vs/platform/terminal/common/terminal';
99
import { URI } from 'vs/base/common/uri';
1010
import { IPtyHostProcessReplayEvent, ISerializedCommandDetectionCapability } from 'vs/platform/terminal/common/capabilities/capabilities';
11+
import { mark } from 'vs/base/common/performance';
1112

1213
/**
1314
* Responsible for establishing and maintaining a connection with an existing terminal process
@@ -141,6 +142,7 @@ export class LocalPty extends Disposable implements ITerminalChildProcess {
141142
}
142143

143144
async handleReplay(e: IPtyHostProcessReplayEvent) {
145+
mark(`code/terminal/willHandleReplay/${this.id}`);
144146
try {
145147
this._inReplay = true;
146148
for (const innerEvent of e.events) {
@@ -163,6 +165,7 @@ export class LocalPty extends Disposable implements ITerminalChildProcess {
163165
// remove size override
164166
this._onDidChangeProperty.fire({ type: ProcessPropertyType.OverrideDimensions, value: undefined });
165167

168+
mark(`code/terminal/didHandleReplay/${this.id}`);
166169
this._onProcessReplayComplete.fire();
167170
}
168171

0 commit comments

Comments
 (0)