use mutable disposable, rm dispose func

This commit is contained in:
meganrogge
2023-09-21 12:16:18 -07:00
parent cd93f51433
commit 95675fae4f

View File

@@ -5,7 +5,7 @@
import * as nls from 'vs/nls'; import * as nls from 'vs/nls';
import { Codicon } from 'vs/base/common/codicons'; 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 Severity from 'vs/base/common/severity';
import { AbstractProblemCollector, StartStopProblemCollector } from 'vs/workbench/contrib/tasks/common/problemCollectors'; import { AbstractProblemCollector, StartStopProblemCollector } from 'vs/workbench/contrib/tasks/common/problemCollectors';
import { ITaskGeneralEvent, ITaskProcessEndedEvent, ITaskProcessStartedEvent, TaskEventKind, TaskRunType } from 'vs/workbench/contrib/tasks/common/tasks'; import { ITaskGeneralEvent, ITaskProcessEndedEvent, ITaskProcessStartedEvent, TaskEventKind, TaskRunType } from 'vs/workbench/contrib/tasks/common/tasks';
@@ -23,7 +23,7 @@ interface ITerminalData {
status: ITerminalStatus; status: ITerminalStatus;
problemMatcher: AbstractProblemCollector; problemMatcher: AbstractProblemCollector;
taskRunEnded: boolean; taskRunEnded: boolean;
disposeListener?: IDisposable; disposeListener?: MutableDisposable<IDisposable>;
} }
const TASK_TERMINAL_STATUS_ID = 'task_terminal_status'; const TASK_TERMINAL_STATUS_ID = 'task_terminal_status';
@@ -50,14 +50,12 @@ export class TaskTerminalStatus extends Disposable {
case TaskEventKind.ProcessEnded: this.eventEnd(event); break; case TaskEventKind.ProcessEnded: this.eventEnd(event); break;
} }
})); }));
} this._register(toDisposable(() => {
public override dispose(): void {
super.dispose();
for (const terminalData of this.terminalMap.values()) { for (const terminalData of this.terminalMap.values()) {
terminalData.disposeListener?.dispose(); terminalData.disposeListener?.dispose();
} }
this.terminalMap.clear(); this.terminalMap.clear();
}));
} }
addTerminal(task: Task, terminal: ITerminalInstance, problemMatcher: AbstractProblemCollector) { addTerminal(task: Task, terminal: ITerminalInstance, problemMatcher: AbstractProblemCollector) {
@@ -140,7 +138,8 @@ export class TaskTerminalStatus extends Disposable {
return; return;
} }
if (!terminalData.disposeListener) { if (!terminalData.disposeListener) {
terminalData.disposeListener = terminalData.terminal.onDisposed(() => { terminalData.disposeListener = this._register(new MutableDisposable());
terminalData.disposeListener.value = terminalData.terminal.onDisposed(() => {
if (!event.terminalId) { if (!event.terminalId) {
return; return;
} }