aboutsummaryrefslogtreecommitdiffstats
path: root/util/async.lua
diff options
context:
space:
mode:
Diffstat (limited to 'util/async.lua')
-rw-r--r--util/async.lua10
1 files changed, 8 insertions, 2 deletions
diff --git a/util/async.lua b/util/async.lua
index 551a5e5c..ece589cb 100644
--- a/util/async.lua
+++ b/util/async.lua
@@ -13,6 +13,9 @@ end
-- Configurable functions
local schedule_task = nil; -- schedule_task(seconds, callback)
+local next_tick = function (f)
+ f();
+end
local function runner_from_thread(thread)
local level = 0;
@@ -62,8 +65,10 @@ local function runner_continue(thread)
-- If state is 'ready', it is our responsibility to update runner.state from 'waiting'.
-- We also have to :run(), because the queue might have further items that will not be
-- processed otherwise. FIXME: It's probably best to do this in a nexttick (0 timer).
- runner.state = "ready";
- runner:run();
+ next_tick(function ()
+ runner.state = "ready";
+ runner:run();
+ end);
end
return true;
end
@@ -286,5 +291,6 @@ return {
wait_for = wait_for;
sleep = sleep;
+ set_nexttick = function(new_next_tick) next_tick = new_next_tick; end;
set_schedule_function = function (new_schedule_function) schedule_task = new_schedule_function; end;
};