Skip to content

Commit

Permalink
Ensure correct pseudoterminal ID
Browse files Browse the repository at this point in the history
Signed-off-by: thegecko <rob.moran@arm.com>
  • Loading branch information
thegecko committed Feb 3, 2023
1 parent d59d527 commit a7eff40
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
6 changes: 4 additions & 2 deletions packages/plugin-ext/src/main/browser/terminal-main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,20 +95,22 @@ export class TerminalServiceMainImpl implements TerminalServiceMain, TerminalLin
protected async trackTerminal(terminal: TerminalWidget): Promise<void> {
let name = terminal.title.label;
this.extProxy.$terminalCreated(terminal.id, name);

const updateTitle = () => {
if (name !== terminal.title.label) {
name = terminal.title.label;
this.extProxy.$terminalNameChanged(terminal.id, name);
}
};
terminal.title.changed.connect(updateTitle);
this.toDispose.push(Disposable.create(() => terminal.title.changed.disconnect(updateTitle)));

const updateProcessId = () => terminal.processId.then(
processId => this.extProxy.$terminalOpened(terminal.id, processId, terminal.terminalId, terminal.dimensions.cols, terminal.dimensions.rows),
() => {/* no-op */ }
);

updateProcessId();
terminal.title.changed.connect(updateTitle);
this.toDispose.push(Disposable.create(() => terminal.title.changed.disconnect(updateTitle)));
this.toDispose.push(terminal.onDidOpen(() => updateProcessId()));
this.toDispose.push(terminal.onTerminalDidClose(term => this.extProxy.$terminalClosed(term.id, term.exitStatus)));
this.toDispose.push(terminal.onSizeChanged(({ cols, rows }) => {
Expand Down
13 changes: 12 additions & 1 deletion packages/plugin-ext/src/plugin/terminal-ext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,18 @@ export class TerminalServiceExtImpl implements TerminalServiceExt {
terminal.deferredProcessId = new Deferred<number>();
terminal.deferredProcessId.resolve(processId);
}
const pseudoTerminal = this._pseudoTerminals.get(terminalId.toString());

// Switch the pseudoterminal keyed by terminalId to be keyed by terminal ID
const tId = terminalId.toString();
if (this._pseudoTerminals.has(tId)) {
const pseudo = this._pseudoTerminals.get(tId);
if (pseudo) {
this._pseudoTerminals.set(id, pseudo);
}
this._pseudoTerminals.delete(tId);
}

const pseudoTerminal = this._pseudoTerminals.get(id);
if (pseudoTerminal) {
pseudoTerminal.emitOnOpen(cols, rows);
}
Expand Down

0 comments on commit a7eff40

Please sign in to comment.