]> git.lizzy.rs Git - minetest.git/blob - builtin/mainmenu/async_event.lua
Fix list sorting behaviour with missing geoip
[minetest.git] / builtin / mainmenu / async_event.lua
1
2 core.async_jobs = {}
3
4 local function handle_job(jobid, serialized_retval)
5         local retval = core.deserialize(serialized_retval)
6         assert(type(core.async_jobs[jobid]) == "function")
7         core.async_jobs[jobid](retval)
8         core.async_jobs[jobid] = nil
9 end
10
11 core.async_event_handler = handle_job
12
13 function core.handle_async(func, parameter, callback)
14         -- Serialize function
15         local serialized_func = string.dump(func)
16
17         assert(serialized_func ~= nil)
18
19         -- Serialize parameters
20         local serialized_param = core.serialize(parameter)
21
22         if serialized_param == nil then
23                 return false
24         end
25
26         local jobid = core.do_async_callback(serialized_func, serialized_param)
27
28         core.async_jobs[jobid] = callback
29
30         return true
31 end
32