From 8f496f22425ad5f844a61e6cc30d697035d5ac81 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 4 Jun 2019 14:36:32 -0700 Subject: [PATCH] Make sure we dispose of emitters for TerminalProcessExtHostProxy --- .../common/terminalProcessExtHostProxy.ts | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/common/terminalProcessExtHostProxy.ts b/src/vs/workbench/contrib/terminal/common/terminalProcessExtHostProxy.ts index 984239d0196..c1ab7a3bc48 100644 --- a/src/vs/workbench/contrib/terminal/common/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/contrib/terminal/common/terminalProcessExtHostProxy.ts @@ -5,36 +5,35 @@ import { Event, Emitter } from 'vs/base/common/event'; import { ITerminalService, ITerminalProcessExtHostProxy, IShellLaunchConfig, ITerminalChildProcess, ITerminalConfigHelper } from 'vs/workbench/contrib/terminal/common/terminal'; -import { IDisposable } from 'vs/base/common/lifecycle'; +import { Disposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import * as nls from 'vs/nls'; let hasReceivedResponse: boolean = false; -export class TerminalProcessExtHostProxy implements ITerminalChildProcess, ITerminalProcessExtHostProxy { - private _disposables: IDisposable[] = []; +export class TerminalProcessExtHostProxy extends Disposable implements ITerminalChildProcess, ITerminalProcessExtHostProxy { - private readonly _onProcessData = new Emitter(); + private readonly _onProcessData = this._register(new Emitter()); public readonly onProcessData: Event = this._onProcessData.event; - private readonly _onProcessExit = new Emitter(); + private readonly _onProcessExit = this._register(new Emitter()); public readonly onProcessExit: Event = this._onProcessExit.event; - private readonly _onProcessIdReady = new Emitter(); + private readonly _onProcessIdReady = this._register(new Emitter()); public readonly onProcessIdReady: Event = this._onProcessIdReady.event; - private readonly _onProcessTitleChanged = new Emitter(); + private readonly _onProcessTitleChanged = this._register(new Emitter()); public readonly onProcessTitleChanged: Event = this._onProcessTitleChanged.event; - private readonly _onInput = new Emitter(); + private readonly _onInput = this._register(new Emitter()); public readonly onInput: Event = this._onInput.event; - private readonly _onResize: Emitter<{ cols: number, rows: number }> = new Emitter<{ cols: number, rows: number }>(); + private readonly _onResize: Emitter<{ cols: number, rows: number }> = this._register(new Emitter<{ cols: number, rows: number }>()); public readonly onResize: Event<{ cols: number, rows: number }> = this._onResize.event; - private readonly _onShutdown = new Emitter(); + private readonly _onShutdown = this._register(new Emitter()); public readonly onShutdown: Event = this._onShutdown.event; - private readonly _onRequestInitialCwd = new Emitter(); + private readonly _onRequestInitialCwd = this._register(new Emitter()); public readonly onRequestInitialCwd: Event = this._onRequestInitialCwd.event; - private readonly _onRequestCwd = new Emitter(); + private readonly _onRequestCwd = this._register(new Emitter()); public readonly onRequestCwd: Event = this._onRequestCwd.event; - private readonly _onRequestLatency = new Emitter(); + private readonly _onRequestLatency = this._register(new Emitter()); public readonly onRequestLatency: Event = this._onRequestLatency.event; private _pendingInitialCwdRequests: ((value?: string | Thenable) => void)[] = []; @@ -51,6 +50,7 @@ export class TerminalProcessExtHostProxy implements ITerminalChildProcess, ITerm @ITerminalService private readonly _terminalService: ITerminalService, @IRemoteAgentService readonly remoteAgentService: IRemoteAgentService ) { + super(); remoteAgentService.getEnvironment().then(env => { if (!env) { throw new Error('Could not fetch environment'); @@ -62,11 +62,6 @@ export class TerminalProcessExtHostProxy implements ITerminalChildProcess, ITerm } } - public dispose(): void { - this._disposables.forEach(d => d.dispose()); - this._disposables.length = 0; - } - public emitData(data: string): void { this._onProcessData.fire(data); } -- GitLab