From 7139a111ab0e9a27a6879f4e393cd7b963a1d000 Mon Sep 17 00:00:00 2001 From: scamiv <6170744+scamiv@users.noreply.github.com> Date: Sat, 9 May 2026 02:19:55 +0200 Subject: [PATCH] fix(client): stop retrying failed NameLayer textures; reset font preload in tests Track permanently failed texture URLs so getTexture does not call PIXI.Assets.load again after a rejection. Extend resetWarningsForTests to clear failedTextures and to reset preloadPromise, fontReady, and fontFamily so tests can run preload() and loadBaseAssets() from a clean state. --- src/client/graphics/layers/NameLayerAssets.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/client/graphics/layers/NameLayerAssets.ts b/src/client/graphics/layers/NameLayerAssets.ts index be9ac4744..51dbff7d4 100644 --- a/src/client/graphics/layers/NameLayerAssets.ts +++ b/src/client/graphics/layers/NameLayerAssets.ts @@ -17,6 +17,7 @@ export class NameLayerAssets { private readonly atlasTextures = new Map(); private readonly emojiTextures = new Map(); private readonly pendingTextures = new Map>(); + private readonly failedTextures = new Set(); private readonly warnedTextureFailures = new Set(); private readonly warnedMissingEmojis = new Set(); private preloadPromise: Promise | null = null; @@ -37,6 +38,10 @@ export class NameLayerAssets { return cached; } + if (this.failedTextures.has(src)) { + return null; + } + if (!this.pendingTextures.has(src)) { this.pendingTextures.set( src, @@ -46,6 +51,7 @@ export class NameLayerAssets { }) .catch((error) => { this.textures.delete(src); + this.failedTextures.add(src); this.warnTextureFailure(src, error); }) .finally(() => { @@ -78,6 +84,10 @@ export class NameLayerAssets { resetWarningsForTests(): void { this.warnedTextureFailures.clear(); this.warnedMissingEmojis.clear(); + this.failedTextures.clear(); + this.preloadPromise = null; + this.fontReady = false; + this.fontFamily = null; } private async loadBaseAssets(): Promise {