feedback3 WD: a fresh model load also forgets PIXI's pending requests keyed by the absolute URL of the same path (GitHub #68)
This commit is contained in:
1 parent
207a49103f
commit
28a00e0f33
2 files changed
+6
-2
No files matched your search
+3
-2
@@ -573,9 +573,10 @@ export function forgetPendingSpine(entry, keep) {
|
|||||||
const done = (u) => { try { return !!PIXI.Assets.cache?.has?.(u); } catch { return true; } };
|
const done = (u) => { try { return !!PIXI.Assets.cache?.has?.(u); } catch { return true; } };
|
||||||
if (done(skel)) return 0;
|
if (done(skel)) return 0;
|
||||||
const atlas = (typeof entry.atlas === 'string' && entry.atlas) || skel.replace(/\.skel$/, '.atlas');
|
const atlas = (typeof entry.atlas === 'string' && entry.atlas) || skel.replace(/\.skel$/, '.atlas');
|
||||||
const urls = done(atlas) ? [skel] : [skel, atlas, ...spinePages(entry)];
|
const urls = (done(atlas) ? [skel] : [skel, atlas, ...spinePages(entry)]).filter((u) => !(keep && keep.has(u)));
|
||||||
let n = 0;
|
let n = 0;
|
||||||
for (const u of urls) if (!(keep && keep.has(u)) && Object.hasOwn(cache, u)) { delete cache[u]; n++; }
|
// the loader keys its cache by the resolved URL: the manifest path itself, or that path made absolute
|
||||||
|
for (const key of Object.keys(cache)) if (urls.some((u) => key === u || (u.startsWith('/') && key.endsWith(u)))) { delete cache[key]; n++; }
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,6 +77,9 @@ test('forgetPendingSpine: PIXI\'s pending requests of an unfinished skeleton go,
|
|||||||
c = setup([]);
|
c = setup([]);
|
||||||
forgetPendingSpine(e, new Set([page]));
|
forgetPendingSpine(e, new Set([page]));
|
||||||
assert.ok(c[page], 'a page another cached skeleton uses stays');
|
assert.ok(c[page], 'a page another cached skeleton uses stays');
|
||||||
|
c = setup([]);
|
||||||
|
c[`http://127.0.0.1:8080${e.atlas}`] = {};
|
||||||
|
assert.equal(forgetPendingSpine(e), 4, 'an absolute key of the same path too');
|
||||||
globalThis.PIXI = {};
|
globalThis.PIXI = {};
|
||||||
assert.equal(forgetPendingSpine(e), 0, 'no loader cache: nothing');
|
assert.equal(forgetPendingSpine(e), 0, 'no loader cache: nothing');
|
||||||
} finally { globalThis.PIXI = prev; }
|
} finally { globalThis.PIXI = prev; }
|
||||||
|
|||||||
Reference in new issue
Block a user