Move ScreenDprMonitor to be owned by RenderCoordinator

(and a11y manager)
This commit is contained in:
Daniel Imms
2019-05-18 19:12:37 -07:00
parent f698cafccb
commit 3e4c1b5a21
4 changed files with 17 additions and 20 deletions
+10 -1
View File
@@ -6,9 +6,12 @@
import { IRenderer } from './Types';
import { RenderDebouncer } from '../ui/RenderDebouncer';
import { EventEmitter2, IEvent } from '../common/EventEmitter2';
import { Disposable } from '../common/Lifecycle';
import { ScreenDprMonitor } from '../../lib/ui/ScreenDprMonitor';
export class RenderCoordinator {
export class RenderCoordinator extends Disposable {
private _renderDebouncer: RenderDebouncer;
private _screenDprMonitor: ScreenDprMonitor;
private _onCanvasResize = new EventEmitter2<{ width: number, height: number }>();
public get onCanvasResize(): IEvent<{ width: number, height: number }> { return this._onCanvasResize.event; }
@@ -22,7 +25,13 @@ export class RenderCoordinator {
private _renderer: IRenderer,
private _rowCount: number
) {
super();
this._renderDebouncer = new RenderDebouncer((start, end) => this._renderRows(start, end));
this.register(this._renderDebouncer);
this._screenDprMonitor = new ScreenDprMonitor();
this._screenDprMonitor.setListener(() => this._renderer.onWindowResize(window.devicePixelRatio));
this.register(this._screenDprMonitor);
}
public refreshRows(start: number, end: number): void {
-7
View File
@@ -9,7 +9,6 @@ import { CursorRenderLayer } from './CursorRenderLayer';
import { IRenderLayer, IRenderer, IRenderDimensions, ICharacterJoinerRegistry } from './Types';
import { ITerminal, CharacterJoinerHandler } from '../Types';
import { LinkRenderLayer } from './LinkRenderLayer';
import { ScreenDprMonitor } from '../ui/ScreenDprMonitor';
import { CharacterJoinerRegistry } from '../renderer/CharacterJoinerRegistry';
import { Disposable } from '../common/Lifecycle';
import { IColorSet } from '../ui/Types';
@@ -17,7 +16,6 @@ import { IColorSet } from '../ui/Types';
export class Renderer extends Disposable implements IRenderer {
private _renderLayers: IRenderLayer[];
private _devicePixelRatio: number;
private _screenDprMonitor: ScreenDprMonitor;
private _isPaused: boolean = false;
private _needsFullRefresh: boolean = false;
private _characterJoinerRegistry: ICharacterJoinerRegistry;
@@ -56,11 +54,6 @@ export class Renderer extends Disposable implements IRenderer {
this._updateDimensions();
this.onOptionsChanged();
// TODO: Move dpr monitor to RenderCoordinator
this._screenDprMonitor = new ScreenDprMonitor();
this._screenDprMonitor.setListener(() => this.onWindowResize(window.devicePixelRatio));
this.register(this._screenDprMonitor);
// Detect whether IntersectionObserver is detected and enable renderer pause
// and resume based on terminal visibility if so
if ('IntersectionObserver' in window) {