mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-20 02:08:47 +00:00
use mutable disposable, rm dispose func
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user