From 2cc53270f38d2279887da6f4a30872680ad3813d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 16 Mar 2026 18:59:46 +0100 Subject: [PATCH] Re-factor the `CachedCanvases` class to use a `Map` internally --- src/display/canvas.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/display/canvas.js b/src/display/canvas.js index eb3a11d14..072db136c 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -205,33 +205,32 @@ function mirrorContextOperations(ctx, destCtx) { } class CachedCanvases { + #cache = new Map(); + constructor(canvasFactory) { this.canvasFactory = canvasFactory; - this.cache = Object.create(null); } getCanvas(id, width, height) { - let canvasEntry; - if (this.cache[id] !== undefined) { - canvasEntry = this.cache[id]; + let canvasEntry = this.#cache.get(id); + if (canvasEntry) { this.canvasFactory.reset(canvasEntry, width, height); } else { canvasEntry = this.canvasFactory.create(width, height); - this.cache[id] = canvasEntry; + this.#cache.set(id, canvasEntry); } return canvasEntry; } delete(id) { - delete this.cache[id]; + this.#cache.delete(id); } clear() { - for (const id in this.cache) { - const canvasEntry = this.cache[id]; + for (const canvasEntry of this.#cache.values()) { this.canvasFactory.destroy(canvasEntry); - delete this.cache[id]; } + this.#cache.clear(); } }