3
0
mirror of https://github.com/britzl/monarch.git synced 2025-11-26 19:00:53 +01:00

Make sure that callbacks aren't invoked more than once

This commit is contained in:
Björn Ritzl
2021-08-19 14:35:05 +02:00
parent 76d4ca2927
commit d3799a93ff
3 changed files with 67 additions and 33 deletions

View File

@@ -6,13 +6,18 @@ function M.create()
local callback = nil
local callback_count = 0
local all_callbacks_done = false
local function is_done()
return callback_count == 0
end
local function invoke_if_done()
if all_callbacks_done then
print("Warning: The same callback will be invoked twice from the callback tracker!", id or "")
end
if callback_count == 0 and callback then
all_callbacks_done = true
local ok, err = pcall(callback)
if not ok then print(err) end
end
@@ -41,20 +46,6 @@ function M.create()
invoke_if_done()
end
function instance.yield_until_done()
local co = coroutine.running()
callback = function()
local ok, err = coroutine.resume(co)
if not ok then
print(err)
end
end
invoke_if_done()
if not is_done() then
coroutine.yield()
end
end
return instance
end