Merge pull request #20896 from Snuffleupagus/CachedCanvases-Map

Re-factor the `CachedCanvases` class to use a `Map` internally
This commit is contained in:
Tim van der Meij 2026-03-16 20:30:36 +01:00 committed by GitHub
commit 87c1231669
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -205,33 +205,32 @@ function mirrorContextOperations(ctx, destCtx) {
} }
class CachedCanvases { class CachedCanvases {
#cache = new Map();
constructor(canvasFactory) { constructor(canvasFactory) {
this.canvasFactory = canvasFactory; this.canvasFactory = canvasFactory;
this.cache = Object.create(null);
} }
getCanvas(id, width, height) { getCanvas(id, width, height) {
let canvasEntry; let canvasEntry = this.#cache.get(id);
if (this.cache[id] !== undefined) { if (canvasEntry) {
canvasEntry = this.cache[id];
this.canvasFactory.reset(canvasEntry, width, height); this.canvasFactory.reset(canvasEntry, width, height);
} else { } else {
canvasEntry = this.canvasFactory.create(width, height); canvasEntry = this.canvasFactory.create(width, height);
this.cache[id] = canvasEntry; this.#cache.set(id, canvasEntry);
} }
return canvasEntry; return canvasEntry;
} }
delete(id) { delete(id) {
delete this.cache[id]; this.#cache.delete(id);
} }
clear() { clear() {
for (const id in this.cache) { for (const canvasEntry of this.#cache.values()) {
const canvasEntry = this.cache[id];
this.canvasFactory.destroy(canvasEntry); this.canvasFactory.destroy(canvasEntry);
delete this.cache[id];
} }
this.#cache.clear();
} }
} }