summaryrefslogtreecommitdiffstats
path: root/player/lua/defaults.lua
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-05-10 15:26:27 +0200
committerwm4 <wm4@nowhere>2018-05-24 19:56:34 +0200
commit159379980ec8c79608b1adada4b66b1d8c016e4a (patch)
tree39296d3c1a8b75be081e88e037d38e81c3a56a79 /player/lua/defaults.lua
parentd7ed3ba4734654f50d577e653179c2c0d729ae30 (diff)
downloadmpv-159379980ec8c79608b1adada4b66b1d8c016e4a.tar.bz2
mpv-159379980ec8c79608b1adada4b66b1d8c016e4a.tar.xz
lua: expose async commands
Might be useful for some.
Diffstat (limited to 'player/lua/defaults.lua')
-rw-r--r--player/lua/defaults.lua21
1 files changed, 21 insertions, 0 deletions
diff --git a/player/lua/defaults.lua b/player/lua/defaults.lua
index d5bb194c50..6f5a9c4b6c 100644
--- a/player/lua/defaults.lua
+++ b/player/lua/defaults.lua
@@ -528,6 +528,27 @@ function mp.add_hook(name, pri, cb)
mp.raw_hook_add(id, name, pri - 50)
end
+local async_call_table = {}
+local async_next_id = 1
+
+function mp.command_native_async(node, cb)
+ local id = async_next_id
+ async_next_id = async_next_id + 1
+ async_call_table[id] = cb
+ mp.raw_command_native_async(id, node)
+end
+
+mp.register_event("command-reply", function(ev)
+ local id = tonumber(ev.id)
+ cb = async_call_table[id]
+ async_call_table[id] = nil
+ if ev.error then
+ cb(false, nil, ev.error)
+ else
+ cb(true, ev.result, nil)
+ end
+end)
+
local mp_utils = package.loaded["mp.utils"]
function mp_utils.format_table(t, set)