Commit Graph
51 Commits
Author SHA1 Message Date
Daniel Imms 80debafa11 Convert a lot of top level consts to const enums 2026-05-02 06:44:25 -07:00
Sridhar Ratnakumar 7a6e724bfe Fix dispose leaks: register CursorBlinkStateManager + _pausedResizeTask
Three related disposable-registration gaps that leak xterm Terminal
instances when the host application unmounts a Terminal. Evidence +
full writeup at juspay/kolu#606.

1. addon-webgl/WebglRenderer._cursorBlinkStateManager was declared
   `= new MutableDisposable()` without the `this._register(...)`
   wrapper that every sibling MutableDisposable in the class uses.
   CursorBlinkStateManager runs a setInterval for the cursor blink
   and its `dispose()` correctly clears it — but dispose() was never
   called because the disposable wasn't registered. The live timer
   kept the renderer (and thus the Terminal) alive past host
   unmount.

2. common/TaskQueue.DebouncedIdleTask had no `dispose()` method.
   Added one that clears the internal IdleTaskQueue (cancelling any
   pending idle callback).

3. browser/services/RenderService._pausedResizeTask (a
   DebouncedIdleTask) was not registered. Wrapped with
   `this._register(...)` so RenderService.dispose propagates.

Verified in a downstream app (kolu) with a repro that toggles Focus
vs Canvas layout modes:

- Pre-fix: 24/28 disposed xterm Terminals retained past host unmount
  + forced GC.
- Post-fix: 0/28 retained.

Retention chain (before fix):

    DOMTimer → ScheduledAction → V8Function
      → CursorBlinkStateManager._renderCallback → WebglRenderer
      → Terminal
2026-04-17 13:32:01 -04:00
Daniel Imms 452ee50c81 Merge pull request #5669 from Tyriar/custom_glyph_alignment
Use offset variants for some custom glyphs
2026-02-06 12:58:20 -08:00
Daniel Imms 6ef653e589 Merge remote-tracking branch 'upstream/master' into de_vs 2026-02-03 07:05:50 -08:00
Daniel Imms 205cf6089d Prevent blink interval from running unless needed
Part of #944
2026-02-03 05:07:40 -08:00
Daniel Imms 9a778f0c98 Move back to CellColorResolver 2026-02-03 04:53:02 -08:00
Daniel Imms f3a7cac49f Handle options within blink state manager 2026-02-03 03:55:25 -08:00
Daniel Imms 0d2a58c9d0 Clean up lifecycle of blink manager 2026-02-03 03:48:28 -08:00
Daniel Imms 8a00898533 Implement blink rendering
Fixes #944
2026-02-03 03:46:21 -08:00
Daniel Imms 93c1650446 Move variant handling out of CellColorResolver.ts 2026-02-03 03:37:57 -08:00
Daniel Imms dc4ebfd6e3 Use offset variants for some custom glyphs
Part of #5668
2026-02-02 08:07:04 -08:00
Daniel Imms eea03cf0a9 Use lightweight versions of most vs/ imports 2026-01-31 22:52:19 -08:00
Daniel Imms f80dbf3d03 Fix lint, split up namespace and interface 2026-01-30 06:21:15 -08:00
Daniel Imms e8d99d50a6 Remove vs dependency in common
Fixes #5631
2026-01-30 06:03:16 -08:00
Daniel Imms 4ddd982e42 Fix blur due to canvas dim mismatch in glyph renderer
Fixes #5606
2026-01-13 06:23:10 -08:00
Daniel Imms 8d532a35c4 Merge pull request #5538 from Tyriar/4731_mobile_warn
Update viewport dims when dpr changes
2025-12-28 16:36:30 -08:00
Daniel Imms d6df8d7902 Update viewport dims when dpr changes
Fixes #4731
2025-12-28 16:30:44 -08:00
Daniel Imms c975956f2a Merge pull request #5529 from Tyriar/worktree1
Force a sync render after resize occurs
2025-12-28 14:44:44 -08:00
Daniel Imms 4619a755b1 Force a sync render after resize occurs
Fixes #4922
Related microsoft/vscode#230120
2025-12-28 14:38:42 -08:00
Daniel Imms f8c1f5a32f Add idle timeout which pauses cursor blink
Fixes #4628
2025-12-28 13:30:58 -08:00
Daniel Imms 5d24866042 Move customGlyphs option into webgl addon
Fixes #5480
2025-12-24 08:35:06 -08:00
Loïc Mangeonjean 496b53d84d fix: support shadow dom in webgl renderer 2025-05-20 16:31:17 +02:00
Daniel Imms a8d43eb2ec Fix issue where listeners remain after WebglRenderer throws
See microsoft/vscode#239838
2025-02-07 05:58:28 -08:00
Daniel Imms 6bcd4f0551 Add missing relative dir to imports 2025-01-08 10:45:41 -08:00
Daniel Imms 71f50b841f Move webgl-specific types into addon 2025-01-08 10:39:06 -08:00
Daniel Imms d70f2a462c Move webgl-specific shared code into addon
Never got moved when canvas addon was removed
2025-01-08 10:35:39 -08:00
Daniel Imms a7b98de833 Handle overflowing to new row 2025-01-07 06:28:59 -08:00
Daniel Imms 9912e7b331 Disable ligatures when cursor is in range
Fixes #5230
2025-01-06 11:08:57 -08:00
Daniel Imms c7a1e0aea3 Handle selections in the middle of ligatures too 2025-01-06 11:03:10 -08:00
Daniel Imms 5bfb130f03 Apply same approach for rendering joined selection in webgl 2025-01-06 10:52:04 -08:00
Daniel Imms ad08a2e15b Render selection under ligatures for webgl
Part of #5231
2025-01-06 10:15:16 -08:00
Daniel Imms b579649a39 Revert to cursor options after DECSCUSR 0
Fixes #3293
2024-12-20 10:34:05 -08:00
Daniel Imms 7fab293cd6 Ensure last ligature cell is updated
Fixes #3288
Fixes #5206
Part of microsoft/vscode#233005
2024-11-04 10:13:34 -08:00
Daniel Imms 144bdb5dd0 Move over to vs disposables 2024-07-14 16:19:20 -07:00
Daniel Imms aee936264b Move to MutableDisposable in vs 2024-07-14 16:09:53 -07:00
Daniel Imms 866bc9eb90 Move to dom.ts addDisposableListener 2024-07-14 16:07:39 -07:00
Daniel Imms 618954b5d6 Import right path in addons 2024-07-14 08:56:54 -07:00
Daniel Imms ae8f2dd61a Remove Events.ts in favor of new Event.forward 2024-07-14 08:50:37 -07:00
Daniel Imms e267f05141 Move forwardEvent to Events.ts 2024-07-14 08:20:18 -07:00
Daniel Imms 90ff6f3d06 Migrate most EventEmitter to base/ Emitter 2024-07-14 07:41:56 -07:00
Daniel Imms 33a7a9b6a2 Implement rescaleOverlappingGlyphs in webgl
Part of #4969
2024-03-14 07:14:13 -07:00
Daniel Imms 8733d2cfa2 Separate link provider service from linkifier 2023-12-23 08:21:35 -08:00
Jean Pierre 9f995c6ff8 💄 2023-12-15 16:03:37 +00:00
jeanp413 81a4d860c5 💄 2023-12-12 09:21:55 -05:00
jeanp413 7ac95fab28 More fixes 2023-12-12 09:19:53 -05:00
Daniel Imms 8a1790d6d5 Merge remote-tracking branch 'upstream/master' into pr/tisilent/4801 2023-11-02 11:13:00 -07:00
Daniel Imms 390e4f30c8 Merge remote-tracking branch 'upstream/master' into pr/tisilent/4703 2023-11-02 10:39:15 -07:00
Daniel Imms b6a09d67e2 Merge remote-tracking branch 'upstream/master' into pr/tisilent/4837 2023-11-02 09:30:17 -07:00
Daniel Imms bb9728ccd1 from xterm -> from scoped 2023-11-01 06:50:08 -07:00
Daniel Imms e1d19e00a5 Merge remote-tracking branch 'upstream/master' into scoped_package 2023-11-01 06:46:14 -07:00