]> git.lizzy.rs Git - lua_async.git/blobdiff - immediates.lua
Merge branch 'master' of https://github.com/EliasFleckenstein03/lua_async
[lua_async.git] / immediates.lua
index 6e0637283b6149927024a92587381f51b8b7b76c..3e378fd84619ac53c2106c1ab9504adf2a10ecf8 100644 (file)
@@ -1,5 +1,7 @@
+local unpack = unpack or table.unpack
 lua_async.immediates = {
        pool = {},
+       executing = {},
        last_id = 0,
 }
 
@@ -15,12 +17,15 @@ end
 
 function clearImmediate(id)
        lua_async.immediates.pool[id] = nil
+       lua_async.immediates.executing[id] = nil
 end
 
 function lua_async.immediates.step(dtime)
-       for id, immediate in pairs(lua_async.immediates.pool) do
+       lua_async.immediates.executing = lua_async.immediates.pool
+       lua_async.immediates.pool = {}
+
+       for id, immediate in pairs(lua_async.immediates.executing) do
                immediate.callback(unpack(immediate.args))
-               clearImmediate(id)
        end
 end