This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { IRenderDebouncerWithCallback } from 'browser/Types';
|
import { IRenderDebouncerWithCallback } from 'browser/Types';
|
||||||
|
import { ICoreBrowserService } from 'browser/services/Services';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Debounces calls to render terminal rows using animation frames.
|
* Debounces calls to render terminal rows using animation frames.
|
||||||
@@ -16,14 +17,14 @@ export class RenderDebouncer implements IRenderDebouncerWithCallback {
|
|||||||
private _refreshCallbacks: FrameRequestCallback[] = [];
|
private _refreshCallbacks: FrameRequestCallback[] = [];
|
||||||
|
|
||||||
constructor(
|
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 {
|
public dispose(): void {
|
||||||
if (this._animationFrame) {
|
if (this._animationFrame) {
|
||||||
this._parentWindow.cancelAnimationFrame(this._animationFrame);
|
this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame);
|
||||||
this._animationFrame = undefined;
|
this._animationFrame = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -31,7 +32,7 @@ export class RenderDebouncer implements IRenderDebouncerWithCallback {
|
|||||||
public addRefreshCallback(callback: FrameRequestCallback): number {
|
public addRefreshCallback(callback: FrameRequestCallback): number {
|
||||||
this._refreshCallbacks.push(callback);
|
this._refreshCallbacks.push(callback);
|
||||||
if (!this._animationFrame) {
|
if (!this._animationFrame) {
|
||||||
this._animationFrame = this._parentWindow.requestAnimationFrame(() => this._innerRefresh());
|
this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => this._innerRefresh());
|
||||||
}
|
}
|
||||||
return this._animationFrame;
|
return this._animationFrame;
|
||||||
}
|
}
|
||||||
@@ -49,7 +50,7 @@ export class RenderDebouncer implements IRenderDebouncerWithCallback {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._animationFrame = this._parentWindow.requestAnimationFrame(() => this._innerRefresh());
|
this._animationFrame = this._coreBrowserService.window.requestAnimationFrame(() => this._innerRefresh());
|
||||||
}
|
}
|
||||||
|
|
||||||
private _innerRefresh(): void {
|
private _innerRefresh(): void {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { ICharSizeService, ICoreBrowserService, IRenderService, IThemeService }
|
|||||||
import { EventEmitter } from 'common/EventEmitter';
|
import { EventEmitter } from 'common/EventEmitter';
|
||||||
import { Disposable, MutableDisposable } from 'common/Lifecycle';
|
import { Disposable, MutableDisposable } from 'common/Lifecycle';
|
||||||
import { DebouncedIdleTask } from 'common/TaskQueue';
|
import { DebouncedIdleTask } from 'common/TaskQueue';
|
||||||
import { IBufferService, IDecorationService, IInstantiationService, IOptionsService } from 'common/services/Services';
|
import { IBufferService, IDecorationService, IOptionsService } from 'common/services/Services';
|
||||||
|
|
||||||
interface ISelectionState {
|
interface ISelectionState {
|
||||||
start: [number, number] | undefined;
|
start: [number, number] | undefined;
|
||||||
@@ -56,12 +56,11 @@ export class RenderService extends Disposable implements IRenderService {
|
|||||||
@IDecorationService decorationService: IDecorationService,
|
@IDecorationService decorationService: IDecorationService,
|
||||||
@IBufferService bufferService: IBufferService,
|
@IBufferService bufferService: IBufferService,
|
||||||
@ICoreBrowserService coreBrowserService: ICoreBrowserService,
|
@ICoreBrowserService coreBrowserService: ICoreBrowserService,
|
||||||
@IInstantiationService instantiationService: IInstantiationService,
|
|
||||||
@IThemeService themeService: IThemeService
|
@IThemeService themeService: IThemeService
|
||||||
) {
|
) {
|
||||||
super();
|
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(this._renderDebouncer);
|
||||||
|
|
||||||
this.register(coreBrowserService.onDprChange(() => this.handleDevicePixelRatioChange()));
|
this.register(coreBrowserService.onDprChange(() => this.handleDevicePixelRatioChange()));
|
||||||
|
|||||||
Reference in New Issue
Block a user