chiark / gitweb /
dice js: Make s.anim_id be possibly null
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Apr 2022 11:27:14 +0000 (12:27 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 16 Apr 2022 11:56:10 +0000 (12:56 +0100)
We might not have requested an animation frame.  If so we shouldn't
cancel it.  Nor, if we have already cancelled it, or if it has
occurred.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
templates/script.ts

index 5268aac192ad0ae14f0bc225fd1929e179797fab..464387e00e9acb010753d7c1a5e06a1faf5d50d6 100644 (file)
@@ -2263,7 +2263,7 @@ function startup() {
 }
 
 type DieSpecialRendering = SpecialRendering & {
-  anim_id: number,
+  anim_id: number | null,
 };
 special_renderings['Die'] = function(piece: PieceId, p: PieceInfo,
                                     s: DieSpecialRendering) {
@@ -2274,11 +2274,15 @@ special_renderings['Die'] = function(piece: PieceId, p: PieceInfo,
 } as any;
 function die_render_frame(piece: PieceId, p: PieceInfo,
                          s: DieSpecialRendering, ts: DOMHighResTimeStamp) {
+  s.anim_id = null;
   console.log('DIE RENDER', piece, ts);
 }
 function die_rendering_stop(piece: PieceId, p: PieceInfo,
                            s: DieSpecialRendering) {
-  window.cancelAnimationFrame(s.anim_id);
+  let anim_id = s.anim_id;
+  if (anim_id == null) return;
+  s.anim_id = null;
+  window.cancelAnimationFrame(anim_id);
 }    
 
 declare var wasm_input : any;