]> source.dussan.org Git - svg.js.git/commitdiff
add terminate method to timeline so memory can be freed
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Sat, 2 Sep 2023 19:44:19 +0000 (21:44 +0200)
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Sat, 2 Sep 2023 19:44:19 +0000 (21:44 +0200)
src/animation/Timeline.js

index 39e0f1acd9797caa7b17d8667b3a1f9baf339234..2f6f5d3f946e3ce3ca32ad9d12810baf0a1688f0 100644 (file)
@@ -27,26 +27,8 @@ export default class Timeline extends EventTarget {
 
     this._timeSource = timeSource
 
-    // Store the timing variables
-    this._startTime = 0
-    this._speed = 1.0
-
-    // Determines how long a runner is hold in memory. Can be a dt or true/false
-    this._persist = 0
-
-    // Keep track of the running animations and their starting parameters
-    this._nextFrame = null
-    this._paused = true
-    this._runners = []
-    this._runnerIds = []
-    this._lastRunnerId = -1
-    this._time = 0
-    this._lastSourceTime = 0
-    this._lastStepTime = 0
-
-    // Make sure that step is always called in class context
-    this._step = this._stepFn.bind(this, false)
-    this._stepImmediate = this._stepFn.bind(this, true)
+    // terminate resets all variables to their initial state
+    this.terminate()
   }
 
   active() {
@@ -326,6 +308,31 @@ export default class Timeline extends EventTarget {
 
     return this
   }
+
+  terminate() {
+    // cleanup memory
+
+    // Store the timing variables
+    this._startTime = 0
+    this._speed = 1.0
+
+    // Determines how long a runner is hold in memory. Can be a dt or true/false
+    this._persist = 0
+
+    // Keep track of the running animations and their starting parameters
+    this._nextFrame = null
+    this._paused = true
+    this._runners = []
+    this._runnerIds = []
+    this._lastRunnerId = -1
+    this._time = 0
+    this._lastSourceTime = 0
+    this._lastStepTime = 0
+
+    // Make sure that step is always called in class context
+    this._step = this._stepFn.bind(this, false)
+    this._stepImmediate = this._stepFn.bind(this, true)
+  }
 }
 
 registerMethods({