command, lua: add a way to share data between scripts

Very primitive and dumb, but fulfils its purpose for the next commits.

I chose this specific implementation because it has the lowest footprint
in command.c, without resorting to crazy hacks such as sending messages
between scripts (which would be hard to coordinate especially on
startup).
This commit is contained in:
wm4 committed 2019-12-18 08:58:49 +01:00
1 parent 6ab013cbdd
commit 7e4819e705
3 files changed
+77

No files matched your search

+24
View File
@@ -676,4 +676,28 @@ function mp_utils.subprocess_detached(t)
mp.commandv("run", unpack(t.args))
end
function mp_utils.shared_script_property_set(name, value)
if value ~= nil then
-- no such thing as change-list with mpv_node, so build a string value
mp.commandv("change-list", "shared-script-properties", "append",
name .. "=" .. value)
else
mp.commandv("change-list", "shared-script-properties", "remove", name)
end
end
function mp_utils.shared_script_property_get(name)
local map = mp.get_property_native("shared-script-properties")
return map and map[name]
end
-- cb(name, value) on change and on init
function mp_utils.shared_script_property_observe(name, cb)
-- it's _very_ wasteful to observe the mpv core "super" property for every
-- shared sub-property, but then again you shouldn't use this
mp.observe_property("shared-script-properties", "native", function(_, val)
cb(name, val and val[name])
end)
end
return {}