Skip to content

Commit f701d07

Browse files
authored
Merge pull request #5182 from jerch/fix_5181
fix #5181
2 parents a5fc111 + 9c74c81 commit f701d07

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

addons/addon-image/test/ImageAddon.test.ts

+10-9
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import test from '@playwright/test';
77
import { readFileSync } from 'fs';
88
import { FINALIZER, introducer, sixelEncode } from 'sixel';
9-
import { ITestContext, createTestContext, openTerminal, pollFor } from '../../../test/playwright/TestUtils';
9+
import { ITestContext, createTestContext, openTerminal, pollFor, timeout } from '../../../test/playwright/TestUtils';
1010
import { deepStrictEqual, ok, strictEqual } from 'assert';
1111

1212
/**
@@ -199,7 +199,7 @@ test.describe('ImageAddon', () => {
199199
(await getScrollbackPlusRows() - 1)
200200
);
201201
// wait here, as we have to make sure, that eviction did not yet occur
202-
await new Promise(r => setTimeout(r, 100));
202+
await timeout(100);
203203
pollFor(ctx.page, 'window.imageAddon._storage._images.size', 1);
204204
// scroll one further should delete the image
205205
await ctx.page.evaluate(() => new Promise(res => (window as any).term.write('\n', res)));
@@ -222,13 +222,13 @@ test.describe('ImageAddon', () => {
222222
await ctx.proxy.write(SIXEL_SEQ_0);
223223
await ctx.proxy.write(SIXEL_SEQ_0);
224224
await ctx.proxy.write(SIXEL_SEQ_0);
225-
await new Promise(r => setTimeout(r, 50));
225+
await timeout(100);
226226
const usage = await ctx.page.evaluate('window.imageAddon.storageUsage');
227227
await ctx.proxy.write(SIXEL_SEQ_0);
228228
await ctx.proxy.write(SIXEL_SEQ_0);
229229
await ctx.proxy.write(SIXEL_SEQ_0);
230230
await ctx.proxy.write(SIXEL_SEQ_0);
231-
await new Promise(r => setTimeout(r, 50));
231+
await timeout(100);
232232
strictEqual(await ctx.page.evaluate('window.imageAddon.storageUsage'), usage);
233233
strictEqual(usage as number < 1, true);
234234
});
@@ -247,25 +247,26 @@ test.describe('ImageAddon', () => {
247247
strictEqual(await ctx.page.evaluate('window.imageAddon.storageUsage'), 0);
248248
});
249249
test('evict tiles by in-place overwrites (only full overwrite tested)', async () => {
250-
await new Promise(r => setTimeout(r, 50));
250+
await timeout(50);
251251
await ctx.proxy.write('\x1b[H' + SIXEL_SEQ_0 + '\x1b[100;100H');
252+
await timeout(50);
252253
let usage = await ctx.page.evaluate('window.imageAddon.storageUsage');
253254
while (usage === 0) {
254-
await new Promise(r => setTimeout(r, 50));
255+
await timeout(50);
255256
usage = await ctx.page.evaluate('window.imageAddon.storageUsage');
256257
}
257258
await ctx.proxy.write('\x1b[H' + SIXEL_SEQ_0 + '\x1b[100;100H');
258-
await new Promise(r => setTimeout(r, 200)); // wait some time and re-check
259+
await timeout(200); // wait some time and re-check
259260
strictEqual(await ctx.page.evaluate('window.imageAddon.storageUsage'), usage);
260261
});
261262
test('manual eviction on alternate buffer must not miss images', async () => {
262263
await ctx.proxy.write('\x1b[?1049h');
263264
await ctx.proxy.write(SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0);
264-
await new Promise(r => setTimeout(r, 50));
265+
await timeout(100);
265266
const usage: number = await ctx.page.evaluate('window.imageAddon.storageUsage');
266267
await ctx.proxy.write(SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0);
267268
await ctx.proxy.write(SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0 + SIXEL_SEQ_0);
268-
await new Promise(r => setTimeout(r, 50));
269+
await timeout(100);
269270
const newUsage: number = await ctx.page.evaluate('window.imageAddon.storageUsage');
270271
strictEqual(newUsage, usage);
271272
});

addons/addon-web-links/test/WebLinksAddon.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ test.describe('WebLinksAddon', () => {
3535
test.beforeEach(async () => {
3636
await ctx.page.evaluate(`
3737
window.term.reset();
38+
window._linkaddon?.dispose();
3839
`);
39-
await timeout(50);
40+
await timeout(10);
4041
await ctx.page.evaluate(`
41-
window._linkaddon?.dispose();
4242
window._linkaddon = new WebLinksAddon();
4343
window.term.loadAddon(window._linkaddon);
4444
`);

addons/addon-webgl/src/WebglAddon.ts

+3
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ export class WebglAddon extends Disposable implements ITerminalAddon , IWebglApi
8888
renderService.setRenderer(this._renderer);
8989

9090
this._register(toDisposable(() => {
91+
if ((this._terminal as any)._core._store._isDisposed) {
92+
return;
93+
}
9194
const renderService: IRenderService = (this._terminal as any)._core._renderService;
9295
renderService.setRenderer((this._terminal as any)._core._createRenderer());
9396
renderService.handleResize(terminal.cols, terminal.rows);

0 commit comments

Comments
 (0)