Merge pull request #128130 from microsoft/tyriar/92649

Dispose of emitters on terminal instance
This commit is contained in:
Daniel Imms 2021-07-07 08:04:49 -07:00 committed by GitHub
commit b47d277a2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -202,36 +202,39 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
get icon(): TerminalIcon | undefined { return this._getIcon(); }
get color(): string | undefined { return this._getColor(); }
// The onExit event is special in that it fires and is disposed after the terminal instance
// itself is disposed
private readonly _onExit = new Emitter<number | undefined>();
get onExit(): Event<number | undefined> { return this._onExit.event; }
private readonly _onDisposed = new Emitter<ITerminalInstance>();
get onDisposed(): Event<ITerminalInstance> { return this._onDisposed.event; }
private readonly _onFocused = new Emitter<ITerminalInstance>();
get onFocused(): Event<ITerminalInstance> { return this._onFocused.event; }
private readonly _onProcessIdReady = new Emitter<ITerminalInstance>();
get onProcessIdReady(): Event<ITerminalInstance> { return this._onProcessIdReady.event; }
private readonly _onLinksReady = new Emitter<ITerminalInstance>();
get onLinksReady(): Event<ITerminalInstance> { return this._onLinksReady.event; }
private readonly _onTitleChanged = new Emitter<ITerminalInstance>();
get onTitleChanged(): Event<ITerminalInstance> { return this._onTitleChanged.event; }
private readonly _onIconChanged = new Emitter<ITerminalInstance>();
get onIconChanged(): Event<ITerminalInstance> { return this._onIconChanged.event; }
private readonly _onData = new Emitter<string>();
get onData(): Event<string> { return this._onData.event; }
private readonly _onBinary = new Emitter<string>();
get onBinary(): Event<string> { return this._onBinary.event; }
private readonly _onLineData = new Emitter<string>();
get onLineData(): Event<string> { return this._onLineData.event; }
private readonly _onRequestExtHostProcess = new Emitter<ITerminalInstance>();
get onRequestExtHostProcess(): Event<ITerminalInstance> { return this._onRequestExtHostProcess.event; }
private readonly _onDimensionsChanged = new Emitter<void>();
get onDimensionsChanged(): Event<void> { return this._onDimensionsChanged.event; }
private readonly _onMaximumDimensionsChanged = new Emitter<void>();
get onMaximumDimensionsChanged(): Event<void> { return this._onMaximumDimensionsChanged.event; }
private readonly _onFocus = new Emitter<ITerminalInstance>();
get onFocus(): Event<ITerminalInstance> { return this._onFocus.event; }
private readonly _onRequestAddInstanceToGroup = new Emitter<IRequestAddInstanceToGroupEvent>();
get onRequestAddInstanceToGroup(): Event<IRequestAddInstanceToGroupEvent> { return this._onRequestAddInstanceToGroup.event; }
readonly onExit = this._onExit.event;
private readonly _onDisposed = this._register(new Emitter<ITerminalInstance>());
readonly onDisposed = this._onDisposed.event;
private readonly _onFocused = this._register(new Emitter<ITerminalInstance>());
readonly onFocused = this._onFocused.event;
private readonly _onProcessIdReady = this._register(new Emitter<ITerminalInstance>());
readonly onProcessIdReady = this._onProcessIdReady.event;
private readonly _onLinksReady = this._register(new Emitter<ITerminalInstance>());
readonly onLinksReady = this._onLinksReady.event;
private readonly _onTitleChanged = this._register(new Emitter<ITerminalInstance>());
readonly onTitleChanged = this._onTitleChanged.event;
private readonly _onIconChanged = this._register(new Emitter<ITerminalInstance>());
readonly onIconChanged = this._onIconChanged.event;
private readonly _onData = this._register(new Emitter<string>());
readonly onData = this._onData.event;
private readonly _onBinary = this._register(new Emitter<string>());
readonly onBinary = this._onBinary.event;
private readonly _onLineData = this._register(new Emitter<string>());
readonly onLineData = this._onLineData.event;
private readonly _onRequestExtHostProcess = this._register(new Emitter<ITerminalInstance>());
readonly onRequestExtHostProcess = this._onRequestExtHostProcess.event;
private readonly _onDimensionsChanged = this._register(new Emitter<void>());
readonly onDimensionsChanged = this._onDimensionsChanged.event;
private readonly _onMaximumDimensionsChanged = this._register(new Emitter<void>());
readonly onMaximumDimensionsChanged = this._onMaximumDimensionsChanged.event;
private readonly _onFocus = this._register(new Emitter<ITerminalInstance>());
readonly onFocus = this._onFocus.event;
private readonly _onRequestAddInstanceToGroup = this._register(new Emitter<IRequestAddInstanceToGroupEvent>());
readonly onRequestAddInstanceToGroup = this._onRequestAddInstanceToGroup.event;
constructor(
private readonly _terminalFocusContextKey: IContextKey<boolean>,
@ -1299,6 +1302,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
}
this._onExit.fire(this._exitCode);
this._onExit.dispose();
}
/**