Skip to content

Commit 4d97729

Browse files
committed
Revert "Merge pull request xtermjs#4166 from Tyriar/event_with_emitter"
This reverts commit d22f7c9, reversing changes made to 1f8e6f0.
1 parent 5f1651f commit 4d97729

34 files changed

+330
-284
lines changed

addons/xterm-addon-canvas/src/CanvasAddon.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@ import { IColorSet } from 'browser/Types';
88
import { CanvasRenderer } from './CanvasRenderer';
99
import { IBufferService, ICoreService, IDecorationService, IOptionsService } from 'common/services/Services';
1010
import { ITerminalAddon, Terminal } from 'xterm';
11-
import { forwardEvent, initEvent } from 'common/EventEmitter';
11+
import { EventEmitter, forwardEvent } from 'common/EventEmitter';
1212

1313
export class CanvasAddon implements ITerminalAddon {
1414
private _terminal?: Terminal;
1515
private _renderer?: CanvasRenderer;
1616

17-
public readonly onChangeTextureAtlas = initEvent<HTMLCanvasElement>();
17+
private readonly _onChangeTextureAtlas = new EventEmitter<HTMLCanvasElement>();
18+
public readonly onChangeTextureAtlas = this._onChangeTextureAtlas.event;
1819

1920
public activate(terminal: Terminal): void {
2021
if (!terminal.element) {
@@ -33,7 +34,7 @@ export class CanvasAddon implements ITerminalAddon {
3334
const screenElement: HTMLElement = (terminal as any)._core.screenElement;
3435
const linkifier = (terminal as any)._core.linkifier2;
3536
this._renderer = new CanvasRenderer(terminal, colors, screenElement, linkifier, bufferService, charSizeService, optionsService, characterJoinerService, coreService, coreBrowserService, decorationService);
36-
forwardEvent(this._renderer.onChangeTextureAtlas, this.onChangeTextureAtlas);
37+
forwardEvent(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas);
3738
renderService.setRenderer(this._renderer);
3839
renderService.onResize(bufferService.cols, bufferService.rows);
3940
}

addons/xterm-addon-canvas/src/CanvasRenderer.ts

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,31 @@
33
* @license MIT
44
*/
55

6-
import { TextRenderLayer } from './TextRenderLayer';
7-
import { SelectionRenderLayer } from './SelectionRenderLayer';
8-
import { CursorRenderLayer } from './CursorRenderLayer';
9-
import { IRenderer, IRenderDimensions, IRequestRedrawEvent } from 'browser/renderer/shared/Types';
10-
import { IRenderLayer } from './Types';
11-
import { LinkRenderLayer } from './LinkRenderLayer';
12-
import { Disposable } from 'common/Lifecycle';
13-
import { IColorSet, ILinkifier2 } from 'browser/Types';
14-
import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService } from 'browser/services/Services';
15-
import { IBufferService, IOptionsService, IDecorationService, ICoreService } from 'common/services/Services';
16-
import { removeTerminalFromCache } from './atlas/CharAtlasCache';
176
import { observeDevicePixelDimensions } from 'browser/renderer/shared/DevicePixelObserver';
7+
import { IRenderDimensions, IRenderer, IRequestRedrawEvent } from 'browser/renderer/shared/Types';
8+
import { ICharacterJoinerService, ICharSizeService, ICoreBrowserService } from 'browser/services/Services';
9+
import { IColorSet, ILinkifier2 } from 'browser/Types';
10+
import { EventEmitter } from 'common/EventEmitter';
11+
import { Disposable } from 'common/Lifecycle';
12+
import { IBufferService, ICoreService, IDecorationService, IOptionsService } from 'common/services/Services';
1813
import { Terminal } from 'xterm';
19-
import { initEvent, EventEmitter, IEvent } from 'common/EventEmitter';
14+
import { removeTerminalFromCache } from './atlas/CharAtlasCache';
15+
import { CursorRenderLayer } from './CursorRenderLayer';
16+
import { LinkRenderLayer } from './LinkRenderLayer';
17+
import { SelectionRenderLayer } from './SelectionRenderLayer';
18+
import { TextRenderLayer } from './TextRenderLayer';
19+
import { IRenderLayer } from './Types';
2020

2121
export class CanvasRenderer extends Disposable implements IRenderer {
2222
private _renderLayers: IRenderLayer[];
2323
private _devicePixelRatio: number;
2424

2525
public dimensions: IRenderDimensions;
2626

27-
public readonly onRequestRedraw = initEvent<IRequestRedrawEvent>();
28-
public readonly onChangeTextureAtlas = initEvent<HTMLCanvasElement>();
27+
private readonly _onRequestRedraw = new EventEmitter<IRequestRedrawEvent>();
28+
public readonly onRequestRedraw = this._onRequestRedraw.event;
29+
private readonly _onChangeTextureAtlas = new EventEmitter<HTMLCanvasElement>();
30+
public readonly onChangeTextureAtlas = this._onChangeTextureAtlas.event;
2931

3032
constructor(
3133
private readonly _terminal: Terminal,
@@ -46,7 +48,7 @@ export class CanvasRenderer extends Disposable implements IRenderer {
4648
new TextRenderLayer(this._terminal, this._screenElement, 0, this._colors, allowTransparency, this._bufferService, this._optionsService, characterJoinerService, decorationService, this._coreBrowserService),
4749
new SelectionRenderLayer(this._terminal, this._screenElement, 1, this._colors, this._bufferService, this._coreBrowserService, decorationService, this._optionsService),
4850
new LinkRenderLayer(this._terminal, this._screenElement, 2, this._colors, linkifier2, this._bufferService, this._optionsService, decorationService, this._coreBrowserService),
49-
new CursorRenderLayer(this._terminal, this._screenElement, 3, this._colors, this.onRequestRedraw, this._bufferService, this._optionsService, coreService, this._coreBrowserService, decorationService)
51+
new CursorRenderLayer(this._terminal, this._screenElement, 3, this._colors, this._onRequestRedraw, this._bufferService, this._optionsService, coreService, this._coreBrowserService, decorationService)
5052
];
5153
this.dimensions = {
5254
scaledCharWidth: 0,
@@ -130,7 +132,7 @@ export class CanvasRenderer extends Disposable implements IRenderer {
130132
this._runOperation(l => l.onSelectionChanged(start, end, columnSelectMode));
131133
// Selection foreground requires a full re-render
132134
if (this._colors.selectionForeground) {
133-
this.onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 });
135+
this._onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 });
134136
}
135137
}
136138

@@ -203,6 +205,6 @@ export class CanvasRenderer extends Disposable implements IRenderer {
203205
}
204206

205207
private _requestRedrawViewport(): void {
206-
this.onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 });
208+
this._onRequestRedraw.fire({ start: 0, end: this._bufferService.rows - 1 });
207209
}
208210
}

addons/xterm-addon-search/src/SearchAddon.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
import { Terminal, IDisposable, ITerminalAddon, IBufferRange, IDecoration } from 'xterm';
7-
import { initEvent } from 'common/EventEmitter';
7+
import { EventEmitter } from 'common/EventEmitter';
88

99
export interface ISearchOptions {
1010
regex?: boolean;
@@ -72,7 +72,8 @@ export class SearchAddon implements ITerminalAddon {
7272

7373
private _resultIndex: number | undefined;
7474

75-
public readonly onDidChangeResults = initEvent<{ resultIndex: number, resultCount: number } | undefined>();
75+
private readonly _onDidChangeResults = new EventEmitter<{ resultIndex: number, resultCount: number } | undefined>();
76+
public readonly onDidChangeResults = this._onDidChangeResults.event;
7677

7778
public activate(terminal: Terminal): void {
7879
this._terminal = terminal;
@@ -88,7 +89,7 @@ export class SearchAddon implements ITerminalAddon {
8889
this._highlightTimeout = setTimeout(() => {
8990
this.findPrevious(this._cachedSearchTerm!, { ...this._lastSearchOptions, incremental: true, noScroll: true });
9091
this._resultIndex = this._searchResults ? this._searchResults.size - 1 : -1;
91-
this.onDidChangeResults.fire({ resultIndex: this._resultIndex, resultCount: this._searchResults?.size ?? -1 });
92+
this._onDidChangeResults.fire({ resultIndex: this._resultIndex, resultCount: this._searchResults?.size ?? -1 });
9293
}, 200);
9394
}
9495
}
@@ -324,9 +325,9 @@ export class SearchAddon implements ITerminalAddon {
324325
private _fireResults(term: string, found: boolean, searchOptions?: ISearchOptions): boolean {
325326
if (searchOptions?.decorations) {
326327
if (this._resultIndex !== undefined && this._searchResults?.size !== undefined) {
327-
this.onDidChangeResults.fire({ resultIndex: this._resultIndex, resultCount: this._searchResults.size });
328+
this._onDidChangeResults.fire({ resultIndex: this._resultIndex, resultCount: this._searchResults.size });
328329
} else {
329-
this.onDidChangeResults.fire(undefined);
330+
this._onDidChangeResults.fire(undefined);
330331
}
331332
}
332333
this._cachedSearchTerm = term;

addons/xterm-addon-webgl/src/WebglAddon.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,22 @@ import { Terminal, ITerminalAddon, IEvent } from 'xterm';
77
import { WebglRenderer } from './WebglRenderer';
88
import { ICharacterJoinerService, ICoreBrowserService, IRenderService } from 'browser/services/Services';
99
import { IColorSet } from 'browser/Types';
10-
import { EventEmitter, forwardEvent, initEvent } from 'common/EventEmitter';
10+
import { EventEmitter, forwardEvent } from 'common/EventEmitter';
1111
import { isSafari } from 'common/Platform';
1212
import { ICoreService, IDecorationService } from 'common/services/Services';
1313

1414
export class WebglAddon implements ITerminalAddon {
1515
private _terminal?: Terminal;
1616
private _renderer?: WebglRenderer;
1717

18-
public readonly onChangeTextureAtlas = initEvent<HTMLElement>();
19-
public readonly onContextLoss = initEvent<void>();
18+
private readonly _onChangeTextureAtlas = new EventEmitter<HTMLElement>();
19+
public readonly onChangeTextureAtlas = this._onChangeTextureAtlas.event;
20+
private readonly _onContextLoss = new EventEmitter<void>();
21+
public readonly onContextLoss = this._onContextLoss.event;
2022

2123
constructor(
2224
private _preserveDrawingBuffer?: boolean
23-
) { }
25+
) {}
2426

2527
public activate(terminal: Terminal): void {
2628
if (!terminal.element) {
@@ -37,8 +39,8 @@ export class WebglAddon implements ITerminalAddon {
3739
const decorationService: IDecorationService = (terminal as any)._core._decorationService;
3840
const colors: IColorSet = (terminal as any)._core._colorManager.colors;
3941
this._renderer = new WebglRenderer(terminal, colors, characterJoinerService, coreBrowserService, coreService, decorationService, this._preserveDrawingBuffer);
40-
forwardEvent(this._renderer.onContextLoss, this.onContextLoss);
41-
forwardEvent(this._renderer.onChangeTextureAtlas, this.onChangeTextureAtlas);
42+
forwardEvent(this._renderer.onContextLoss, this._onContextLoss);
43+
forwardEvent(this._renderer.onChangeTextureAtlas, this._onChangeTextureAtlas);
4244
renderService.setRenderer(this._renderer);
4345
}
4446

addons/xterm-addon-webgl/src/WebglRenderer.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { IColorSet, ITerminal } from 'browser/Types';
1313
import { AttributeData } from 'common/buffer/AttributeData';
1414
import { CellData } from 'common/buffer/CellData';
1515
import { Content, NULL_CELL_CHAR, NULL_CELL_CODE } from 'common/buffer/Constants';
16-
import { initEvent } from 'common/EventEmitter';
16+
import { EventEmitter } from 'common/EventEmitter';
1717
import { Disposable } from 'common/Lifecycle';
1818
import { ICoreService, IDecorationService } from 'common/services/Services';
1919
import { CharData, IBufferLine, ICellData } from 'common/Types';
@@ -46,9 +46,12 @@ export class WebglRenderer extends Disposable implements IRenderer {
4646
private _isAttached: boolean;
4747
private _contextRestorationTimeout: number | undefined;
4848

49-
public readonly onChangeTextureAtlas = initEvent<HTMLCanvasElement>();
50-
public readonly onRequestRedraw = initEvent<IRequestRedrawEvent>();
51-
public readonly onContextLoss = initEvent<void>();
49+
private readonly _onChangeTextureAtlas = new EventEmitter<HTMLCanvasElement>();
50+
public readonly onChangeTextureAtlas = this._onChangeTextureAtlas.event;
51+
private readonly _onRequestRedraw = new EventEmitter<IRequestRedrawEvent>();
52+
public readonly onRequestRedraw = this._onRequestRedraw.event;
53+
private readonly _onContextLoss = new EventEmitter<void>();
54+
public readonly onContextLoss = this._onContextLoss.event;
5255

5356
constructor(
5457
private _terminal: Terminal,
@@ -67,7 +70,7 @@ export class WebglRenderer extends Disposable implements IRenderer {
6770

6871
this._renderLayers = [
6972
new LinkRenderLayer(this._core.screenElement!, 2, this._colors, this._core, this._coreBrowserService),
70-
new CursorRenderLayer(_terminal, this._core.screenElement!, 3, this._colors, this.onRequestRedraw, this._coreBrowserService, coreService)
73+
new CursorRenderLayer(_terminal, this._core.screenElement!, 3, this._colors, this._onRequestRedraw, this._coreBrowserService, coreService)
7174
];
7275
this.dimensions = {
7376
scaledCharWidth: 0,
@@ -107,7 +110,7 @@ export class WebglRenderer extends Disposable implements IRenderer {
107110
this._contextRestorationTimeout = setTimeout(() => {
108111
this._contextRestorationTimeout = undefined;
109112
console.warn('webgl context not restored; firing onContextLoss');
110-
this.onContextLoss.fire(e);
113+
this._onContextLoss.fire(e);
111114
}, 3000 /* ms */);
112115
}));
113116
this.register(addDisposableDomListener(this._canvas, 'webglcontextrestored', (e) => {
@@ -273,7 +276,7 @@ export class WebglRenderer extends Disposable implements IRenderer {
273276

274277
const atlas = acquireTextureAtlas(this._terminal, this._colors, this.dimensions.scaledCellWidth, this.dimensions.scaledCellHeight, this.dimensions.scaledCharWidth, this.dimensions.scaledCharHeight, this._coreBrowserService.dpr);
275278
if (this._charAtlas !== atlas) {
276-
this.onChangeTextureAtlas.fire(atlas.cacheCanvas);
279+
this._onChangeTextureAtlas.fire(atlas.cacheCanvas);
277280
}
278281
this._charAtlas = atlas;
279282
this._charAtlas.warmUp();
@@ -412,9 +415,9 @@ export class WebglRenderer extends Disposable implements IRenderer {
412415

413416
// Nothing has changed, no updates needed
414417
if (this._model.cells[i] === code &&
415-
this._model.cells[i + RENDER_MODEL_BG_OFFSET] === this._cellColorResolver.result.bg &&
416-
this._model.cells[i + RENDER_MODEL_FG_OFFSET] === this._cellColorResolver.result.fg &&
417-
this._model.cells[i + RENDER_MODEL_EXT_OFFSET] === this._cellColorResolver.result.ext) {
418+
this._model.cells[i + RENDER_MODEL_BG_OFFSET] === this._cellColorResolver.result.bg &&
419+
this._model.cells[i + RENDER_MODEL_FG_OFFSET] === this._cellColorResolver.result.fg &&
420+
this._model.cells[i + RENDER_MODEL_EXT_OFFSET] === this._cellColorResolver.result.ext) {
418421
continue;
419422
}
420423

@@ -519,7 +522,7 @@ export class WebglRenderer extends Disposable implements IRenderer {
519522
}
520523

521524
private _requestRedrawViewport(): void {
522-
this.onRequestRedraw.fire({ start: 0, end: this._terminal.rows - 1 });
525+
this._onRequestRedraw.fire({ start: 0, end: this._terminal.rows - 1 });
523526
}
524527
}
525528

src/browser/Linkifier2.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { ILinkifier2, ILinkProvider, IBufferCellPosition, ILink, ILinkifierEvent
77
import { IDisposable } from 'common/Types';
88
import { IMouseService, IRenderService } from './services/Services';
99
import { IBufferService } from 'common/services/Services';
10-
import { EventEmitter, IEvent, initEvent } from 'common/EventEmitter';
10+
import { EventEmitter, IEvent } from 'common/EventEmitter';
1111
import { Disposable, getDisposeArrayDisposable, disposeArray } from 'common/Lifecycle';
1212
import { addDisposableDomListener } from 'browser/Lifecycle';
1313

@@ -26,8 +26,10 @@ export class Linkifier2 extends Disposable implements ILinkifier2 {
2626
private _activeProviderReplies: Map<Number, ILinkWithState[] | undefined> | undefined;
2727
private _activeLine: number = -1;
2828

29-
public readonly onShowLinkUnderline = this.register(initEvent<ILinkifierEvent>());
30-
public readonly onHideLinkUnderline = this.register(initEvent<ILinkifierEvent>());
29+
private readonly _onShowLinkUnderline = this.register(new EventEmitter<ILinkifierEvent>());
30+
public readonly onShowLinkUnderline = this._onShowLinkUnderline.event;
31+
private readonly _onHideLinkUnderline = this.register(new EventEmitter<ILinkifierEvent>());
32+
public readonly onHideLinkUnderline = this._onHideLinkUnderline.event;
3133

3234
constructor(
3335
@IBufferService private readonly _bufferService: IBufferService
@@ -341,7 +343,7 @@ export class Linkifier2 extends Disposable implements ILinkifier2 {
341343
const range = link.range;
342344
const scrollOffset = this._bufferService.buffer.ydisp;
343345
const event = this._createLinkUnderlineEvent(range.start.x - 1, range.start.y - scrollOffset - 1, range.end.x, range.end.y - scrollOffset - 1, undefined);
344-
const emitter = showEvent ? this.onShowLinkUnderline : this.onHideLinkUnderline;
346+
const emitter = showEvent ? this._onShowLinkUnderline : this._onHideLinkUnderline;
345347
emitter.fire(event);
346348
}
347349

0 commit comments

Comments
 (0)