Merge pull request #18336 from Snuffleupagus/InternalRenderTask-cancel-cancelAnimationFrame

Cancel the `requestAnimationFrame` in the API when cancelling rendering
This commit is contained in:
Tim van der Meij 2024-06-27 19:40:16 +02:00 committed by GitHub
commit 53aca5fab1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3254,6 +3254,8 @@ class RenderTask {
* @ignore
*/
class InternalRenderTask {
#rAF = null;
static #canvasInUse = new WeakSet();
constructor({
@ -3353,6 +3355,10 @@ class InternalRenderTask {
this.running = false;
this.cancelled = true;
this.gfx?.endDrawing();
if (this.#rAF) {
window.cancelAnimationFrame(this.#rAF);
this.#rAF = null;
}
InternalRenderTask.#canvasInUse.delete(this._canvas);
this.callback(
@ -3391,7 +3397,8 @@ class InternalRenderTask {
_scheduleNext() {
if (this._useRequestAnimationFrame) {
window.requestAnimationFrame(() => {
this.#rAF = window.requestAnimationFrame(() => {
this.#rAF = null;
this._nextBound().catch(this._cancelBound);
});
} else {