diff --git a/src/browser/RenderDebouncer.ts b/src/browser/RenderDebouncer.ts index b3118d5f..4877a140 100644 --- a/src/browser/RenderDebouncer.ts +++ b/src/browser/RenderDebouncer.ts @@ -4,6 +4,7 @@ */ import { IRenderDebouncerWithCallback } from 'browser/Types'; +import { ICoreBrowserService } from 'browser/services/Services'; /** * Debounces calls to render terminal rows using animation frames. @@ -16,14 +17,14 @@ export class RenderDebouncer implements IRenderDebouncerWithCallback { private _refreshCallbacks: FrameRequestCallback[] = []; constructor( - private _parentWindow: Window, - private _renderCallback: (start: number, end: number) => void + private _renderCallback: (start: number, end: number) => void, + private readonly _coreBrowserService: ICoreBrowserService, ) { } public dispose(): void { if (this._animationFrame) { - this._parentWindow.cancelAnimationFrame(this._animationFrame); + this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame); this._animationFrame = undefined; } } @@ -31,7 +32,7 @@ export class RenderDebouncer implements IRenderDebouncerWithCallback { public addRefreshCallback(callback: FrameRequestCallback): number { this._refreshCallbacks.push(callback); if (!this._animationFrame) { - this._animationFrame = this._parentWindow.requestAnimationFrame(() => this._innerRefresh()); + this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => this._innerRefresh()); } return this._animationFrame; } @@ -49,7 +50,7 @@ export class RenderDebouncer implements IRenderDebouncerWithCallback { return; } - this._animationFrame = this._parentWindow.requestAnimationFrame(() => this._innerRefresh()); + this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => this._innerRefresh()); } private _innerRefresh(): void { diff --git a/src/browser/services/RenderService.ts b/src/browser/services/RenderService.ts index 9fa8d234..dddd5185 100644 --- a/src/browser/services/RenderService.ts +++ b/src/browser/services/RenderService.ts @@ -10,7 +10,7 @@ import { ICharSizeService, ICoreBrowserService, IRenderService, IThemeService } import { EventEmitter } from 'common/EventEmitter'; import { Disposable, MutableDisposable } from 'common/Lifecycle'; import { DebouncedIdleTask } from 'common/TaskQueue'; -import { IBufferService, IDecorationService, IInstantiationService, IOptionsService } from 'common/services/Services'; +import { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services'; interface ISelectionState { start: [number, number] | undefined; @@ -56,12 +56,11 @@ export class RenderService extends Disposable implements IRenderService { @IDecorationService decorationService: IDecorationService, @IBufferService bufferService: IBufferService, @ICoreBrowserService coreBrowserService: ICoreBrowserService, - @IInstantiationService instantiationService: IInstantiationService, @IThemeService themeService: IThemeService ) { super(); - this._renderDebouncer = new RenderDebouncer(coreBrowserService.window, (start, end) => this._renderRows(start, end)); + this._renderDebouncer = new RenderDebouncer((start, end) => this._renderRows(start, end), coreBrowserService); this.register(this._renderDebouncer); this.register(coreBrowserService.onDprChange(() => this.handleDevicePixelRatioChange()));