Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/media-preview/src/util/dispose.ts
4774 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import * as vscode from 'vscode';
7
8
export function disposeAll(disposables: vscode.Disposable[]) {
9
while (disposables.length) {
10
const item = disposables.pop();
11
if (item) {
12
item.dispose();
13
}
14
}
15
}
16
17
export abstract class Disposable {
18
private _isDisposed = false;
19
20
protected _disposables: vscode.Disposable[] = [];
21
22
public dispose(): any {
23
if (this._isDisposed) {
24
return;
25
}
26
this._isDisposed = true;
27
disposeAll(this._disposables);
28
}
29
30
protected _register<T extends vscode.Disposable>(value: T): T {
31
if (this._isDisposed) {
32
value.dispose();
33
} else {
34
this._disposables.push(value);
35
}
36
return value;
37
}
38
39
protected get isDisposed() {
40
return this._isDisposed;
41
}
42
}
43