]> git.lizzy.rs Git - lua_async.git/blobdiff - intervals.lua
Merge branch 'master' of https://github.com/EliasFleckenstein03/lua_async
[lua_async.git] / intervals.lua
index 72a0cc74135189e58b42e39551c8a9632ccbfa89..fa019f27099132742c09d9ed7c287711be66e06c 100644 (file)
@@ -1,5 +1,7 @@
+local unpack = unpack or table.unpack
 lua_async.intervals = {
        pool = {},
+       executing = {},
        last_id = 0,
 }
 
@@ -18,11 +20,18 @@ end
 
 function clearInterval(id)
        lua_async.intervals.pool[id] = nil
+       lua_async.intervals.executing[id] = nil
 end
 
 function lua_async.intervals.step(dtime)
-       for id, interval in pairs(lua_async.intervals.pool) do
-               interval.time_left = timeout.time_left - dtime
+       lua_async.intervals.executing = {}
+
+       for k, v in pairs(lua_async.intervals.pool) do
+               lua_async.intervals.executing[k] = v
+       end
+
+       for id, interval in pairs(lua_async.intervals.executing) do
+               interval.time_left = interval.time_left - dtime
 
                if interval.time_left <= 0 then
                        interval.callback(unpack(interval.args))