From 95675fae4fedce71b8cacc0b590baaee3f95a839 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Thu, 21 Sep 2023 12:16:18 -0700 Subject: [PATCH] use mutable disposable, rm dispose func --- .../tasks/browser/taskTerminalStatus.ts | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts index 07505eb9d05..df714767124 100644 --- a/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts +++ b/src/vs/workbench/contrib/tasks/browser/taskTerminalStatus.ts @@ -5,7 +5,7 @@ import * as nls from 'vs/nls'; import { Codicon } from 'vs/base/common/codicons'; -import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; +import { Disposable, IDisposable, MutableDisposable, toDisposable } from 'vs/base/common/lifecycle'; import Severity from 'vs/base/common/severity'; import { AbstractProblemCollector, StartStopProblemCollector } from 'vs/workbench/contrib/tasks/common/problemCollectors'; import { ITaskGeneralEvent, ITaskProcessEndedEvent, ITaskProcessStartedEvent, TaskEventKind, TaskRunType } from 'vs/workbench/contrib/tasks/common/tasks'; @@ -23,7 +23,7 @@ interface ITerminalData { status: ITerminalStatus; problemMatcher: AbstractProblemCollector; taskRunEnded: boolean; - disposeListener?: IDisposable; + disposeListener?: MutableDisposable; } const TASK_TERMINAL_STATUS_ID = 'task_terminal_status'; @@ -50,14 +50,12 @@ export class TaskTerminalStatus extends Disposable { case TaskEventKind.ProcessEnded: this.eventEnd(event); break; } })); - } - - public override dispose(): void { - super.dispose(); - for (const terminalData of this.terminalMap.values()) { - terminalData.disposeListener?.dispose(); - } - this.terminalMap.clear(); + this._register(toDisposable(() => { + for (const terminalData of this.terminalMap.values()) { + terminalData.disposeListener?.dispose(); + } + this.terminalMap.clear(); + })); } addTerminal(task: Task, terminal: ITerminalInstance, problemMatcher: AbstractProblemCollector) { @@ -140,7 +138,8 @@ export class TaskTerminalStatus extends Disposable { return; } if (!terminalData.disposeListener) { - terminalData.disposeListener = terminalData.terminal.onDisposed(() => { + terminalData.disposeListener = this._register(new MutableDisposable()); + terminalData.disposeListener.value = terminalData.terminal.onDisposed(() => { if (!event.terminalId) { return; }