提交 c114ccc1 编写于 作者: J Johannes Rieken

have high listener leak limit only for those emitters that are used by the ResourceLabel, #63655

上级 b2f53b4e
......@@ -403,9 +403,9 @@ export function anyEvent<T>(...events: Event<T>[]): Event<T> {
return (listener, thisArgs = null, disposables?) => combinedDisposable(events.map(event => event(e => listener.call(thisArgs, e), null, disposables)));
}
export function debounceEvent<T>(event: Event<T>, merger: (last: T, event: T) => T, delay?: number, leading?: boolean): Event<T>;
export function debounceEvent<I, O>(event: Event<I>, merger: (last: O | undefined, event: I) => O, delay?: number, leading?: boolean): Event<O>;
export function debounceEvent<I, O>(event: Event<I>, merger: (last: O | undefined, event: I) => O, delay: number = 100, leading = false): Event<O> {
export function debounceEvent<T>(event: Event<T>, merger: (last: T, event: T) => T, delay?: number, leading?: boolean, leakWarningThreshold?: number): Event<T>;
export function debounceEvent<I, O>(event: Event<I>, merger: (last: O | undefined, event: I) => O, delay?: number, leading?: boolean, leakWarningThreshold?: number): Event<O>;
export function debounceEvent<I, O>(event: Event<I>, merger: (last: O | undefined, event: I) => O, delay: number = 100, leading = false, leakWarningThreshold?: number): Event<O> {
let subscription: IDisposable;
let output: O | undefined = undefined;
......@@ -413,6 +413,7 @@ export function debounceEvent<I, O>(event: Event<I>, merger: (last: O | undefine
let numDebouncedCalls = 0;
const emitter = new Emitter<O>({
leakWarningThreshold,
onFirstListenerAdd() {
subscription = event(cur => {
numDebouncedCalls++;
......
......@@ -275,7 +275,7 @@ export class ModelServiceImpl extends Disposable implements IModelService {
private readonly _onModelRemoved: Emitter<ITextModel> = this._register(new Emitter<ITextModel>());
public readonly onModelRemoved: Event<ITextModel> = this._onModelRemoved.event;
private readonly _onModelModeChanged: Emitter<{ model: ITextModel; oldModeId: string; }> = this._register(new Emitter<{ model: ITextModel; oldModeId: string; }>());
private readonly _onModelModeChanged: Emitter<{ model: ITextModel; oldModeId: string; }> = this._register(new Emitter<{ model: ITextModel; oldModeId: string; }>({ leakWarningThreshold: 500 }));
public readonly onModelModeChanged: Event<{ model: ITextModel; oldModeId: string; }> = this._onModelModeChanged.event;
private _modelCreationOptionsByLanguageAndResource: {
......
......@@ -51,7 +51,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
private workspaceEditingQueue: Queue<void>;
protected readonly _onDidChangeConfiguration: Emitter<IConfigurationChangeEvent> = this._register(new Emitter<IConfigurationChangeEvent>());
protected readonly _onDidChangeConfiguration: Emitter<IConfigurationChangeEvent> = this._register(new Emitter<IConfigurationChangeEvent>({ leakWarningThreshold: 500 }));
public readonly onDidChangeConfiguration: Event<IConfigurationChangeEvent> = this._onDidChangeConfiguration.event;
protected readonly _onDidChangeWorkspaceFolders: Emitter<IWorkspaceFoldersChangeEvent> = this._register(new Emitter<IWorkspaceFoldersChangeEvent>());
......
......@@ -339,7 +339,7 @@ export class FileDecorationsService implements IDecorationsService {
private readonly _data = new LinkedList<DecorationProviderWrapper>();
private readonly _onDidChangeDecorationsDelayed = new Emitter<URI | URI[]>();
private readonly _onDidChangeDecorations = new Emitter<IResourceDecorationChangeEvent>();
private readonly _onDidChangeDecorations = new Emitter<IResourceDecorationChangeEvent>({ leakWarningThreshold: 500 });
private readonly _decorationStyles: DecorationStyles;
private readonly _disposables: IDisposable[];
......@@ -347,7 +347,8 @@ export class FileDecorationsService implements IDecorationsService {
this._onDidChangeDecorations.event,
debounceEvent<URI | URI[], FileDecorationChangeEvent>(
this._onDidChangeDecorationsDelayed.event,
FileDecorationChangeEvent.debouncer
FileDecorationChangeEvent.debouncer,
undefined, undefined, 500
)
);
......
......@@ -306,7 +306,7 @@ export class ExtensionService extends Disposable implements IExtensionService {
this._extensionsMessages = {};
this._allRequestedActivateEvents = Object.create(null);
this._onDidRegisterExtensions = new Emitter<void>();
this._onDidRegisterExtensions = new Emitter<void>({ leakWarningThreshold: 500 });
this._extensionHostProcessManagers = [];
this._extensionHostProcessActivationTimes = Object.create(null);
......
......@@ -103,7 +103,7 @@ export class WorkbenchThemeService implements IWorkbenchThemeService {
this.colorThemeStore = new ColorThemeStore(extensionService, ColorThemeData.createLoadedEmptyTheme(DEFAULT_THEME_ID, DEFAULT_THEME_SETTING_VALUE));
this.onFileIconThemeChange = new Emitter<IFileIconTheme>();
this.iconThemeStore = new FileIconThemeStore(extensionService);
this.onColorThemeChange = new Emitter<IColorTheme>();
this.onColorThemeChange = new Emitter<IColorTheme>({ leakWarningThreshold: 500 });
this.currentIconTheme = {
id: '',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册