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 {
#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();
}
}