Handle options within blink state manager

This commit is contained in:
Daniel Imms
2026-02-03 03:55:25 -08:00
parent 0d2a58c9d0
commit f3a7cac49f
3 changed files with 11 additions and 7 deletions
+2 -3
View File
@@ -109,9 +109,9 @@ export class WebglRenderer extends Disposable implements IRenderer {
this._register(_optionsService.onOptionChange(() => this._handleOptionsChanged())); this._register(_optionsService.onOptionChange(() => this._handleOptionsChanged()));
this._textBlinkStateManager = this._register(new TextBlinkStateManager( this._textBlinkStateManager = this._register(new TextBlinkStateManager(
() => this._requestRedrawViewport(), () => this._requestRedrawViewport(),
this._coreBrowserService this._coreBrowserService,
this._optionsService
)); ));
this._textBlinkStateManager.setIntervalDuration(this._optionsService.rawOptions.blinkIntervalDuration);
this._deviceMaxTextureSize = this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE); this._deviceMaxTextureSize = this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE);
@@ -257,7 +257,6 @@ export class WebglRenderer extends Disposable implements IRenderer {
this._updateDimensions(); this._updateDimensions();
this._refreshCharAtlas(); this._refreshCharAtlas();
this._updateCursorBlink(); this._updateCursorBlink();
this._textBlinkStateManager.setIntervalDuration(this._optionsService.rawOptions.blinkIntervalDuration);
} }
/** /**
+2 -3
View File
@@ -100,9 +100,9 @@ export class DomRenderer extends Disposable implements IRenderer {
this._register(toDisposable(() => this._cursorBlinkStateManager.dispose())); this._register(toDisposable(() => this._cursorBlinkStateManager.dispose()));
this._textBlinkStateManager = this._register(new TextBlinkStateManager( this._textBlinkStateManager = this._register(new TextBlinkStateManager(
() => this._onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 }), () => this._onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 }),
this._coreBrowserService this._coreBrowserService,
this._optionsService
)); ));
this._textBlinkStateManager.setIntervalDuration(this._optionsService.rawOptions.blinkIntervalDuration);
this._register(toDisposable(() => { this._register(toDisposable(() => {
this._element.classList.remove(TERMINAL_CLASS_PREFIX + this._terminalClass); this._element.classList.remove(TERMINAL_CLASS_PREFIX + this._terminalClass);
@@ -447,7 +447,6 @@ export class DomRenderer extends Disposable implements IRenderer {
this._optionsService.rawOptions.fontWeightBold this._optionsService.rawOptions.fontWeightBold
); );
this._setDefaultSpacing(); this._setDefaultSpacing();
this._textBlinkStateManager.setIntervalDuration(this._optionsService.rawOptions.blinkIntervalDuration);
} }
public clear(): void { public clear(): void {
@@ -5,6 +5,7 @@
import { ICoreBrowserService } from 'browser/services/Services'; import { ICoreBrowserService } from 'browser/services/Services';
import { Disposable, toDisposable } from 'common/Lifecycle'; import { Disposable, toDisposable } from 'common/Lifecycle';
import { IOptionsService } from 'common/services/Services';
export class TextBlinkStateManager extends Disposable { export class TextBlinkStateManager extends Disposable {
private _intervalDuration: number = 0; private _intervalDuration: number = 0;
@@ -13,9 +14,14 @@ export class TextBlinkStateManager extends Disposable {
constructor( constructor(
private readonly _renderCallback: () => void, private readonly _renderCallback: () => void,
private readonly _coreBrowserService: ICoreBrowserService private readonly _coreBrowserService: ICoreBrowserService,
private readonly _optionsService: IOptionsService
) { ) {
super(); super();
this._register(this._optionsService.onSpecificOptionChange('blinkIntervalDuration', duration => {
this.setIntervalDuration(duration);
}));
this.setIntervalDuration(this._optionsService.rawOptions.blinkIntervalDuration);
this._register(toDisposable(() => this._clearInterval())); this._register(toDisposable(() => this._clearInterval()));
} }