mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-20 02:08:47 +00:00
fix: memory leak in terminal chat widget (#284325)
This commit is contained in:
@@ -8,7 +8,7 @@ import { Dimension, getActiveWindow, IFocusTracker, trackFocus } from '../../../
|
|||||||
import { CancelablePromise, createCancelablePromise, DeferredPromise } from '../../../../../base/common/async.js';
|
import { CancelablePromise, createCancelablePromise, DeferredPromise } from '../../../../../base/common/async.js';
|
||||||
import { CancellationTokenSource } from '../../../../../base/common/cancellation.js';
|
import { CancellationTokenSource } from '../../../../../base/common/cancellation.js';
|
||||||
import { Emitter, Event } from '../../../../../base/common/event.js';
|
import { Emitter, Event } from '../../../../../base/common/event.js';
|
||||||
import { Disposable, DisposableStore, MutableDisposable, toDisposable } from '../../../../../base/common/lifecycle.js';
|
import { Disposable, DisposableStore, IDisposable, MutableDisposable, toDisposable } from '../../../../../base/common/lifecycle.js';
|
||||||
import { autorun, observableValue, type IObservable } from '../../../../../base/common/observable.js';
|
import { autorun, observableValue, type IObservable } from '../../../../../base/common/observable.js';
|
||||||
import { MicrotaskDelay } from '../../../../../base/common/symbols.js';
|
import { MicrotaskDelay } from '../../../../../base/common/symbols.js';
|
||||||
import { localize } from '../../../../../nls.js';
|
import { localize } from '../../../../../nls.js';
|
||||||
@@ -82,6 +82,7 @@ export class TerminalChatWidget extends Disposable {
|
|||||||
private _terminalAgentName = 'terminal';
|
private _terminalAgentName = 'terminal';
|
||||||
|
|
||||||
private readonly _model: MutableDisposable<IChatModelReference> = this._register(new MutableDisposable());
|
private readonly _model: MutableDisposable<IChatModelReference> = this._register(new MutableDisposable());
|
||||||
|
private readonly _sessionDisposables: MutableDisposable<IDisposable> = this._register(new MutableDisposable());
|
||||||
|
|
||||||
private _sessionCtor: CancelablePromise<void> | undefined;
|
private _sessionCtor: CancelablePromise<void> | undefined;
|
||||||
|
|
||||||
@@ -334,7 +335,7 @@ export class TerminalChatWidget extends Disposable {
|
|||||||
this._resetPlaceholder();
|
this._resetPlaceholder();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this._register(toDisposable(() => this._sessionCtor?.cancel()));
|
this._sessionDisposables.value = toDisposable(() => this._sessionCtor?.cancel());
|
||||||
}
|
}
|
||||||
|
|
||||||
private _saveViewState() {
|
private _saveViewState() {
|
||||||
|
|||||||
Reference in New Issue
Block a user