summaryrefslogtreecommitdiffstats
path: root/player/lua/defaults.lua
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-04-08 21:10:00 +0200
committerwm4 <wm4@nowhere>2014-04-08 21:10:00 +0200
commita94020e25bc5fc50ac0cea132a4cccb7743e85fa (patch)
treeb18f44436bae70ce7833c4ff5247cc1fdd2793e1 /player/lua/defaults.lua
parent708f32b74677ae3fac00ecabfbfd866426b06586 (diff)
downloadmpv-a94020e25bc5fc50ac0cea132a4cccb7743e85fa.tar.bz2
mpv-a94020e25bc5fc50ac0cea132a4cccb7743e85fa.tar.xz
lua: add API for observing property changes
A low level API was added already earlier, but that was merely a binding for the raw C API. Add a "proper" one, and document it.
Diffstat (limited to 'player/lua/defaults.lua')
-rw-r--r--player/lua/defaults.lua26
1 files changed, 26 insertions, 0 deletions
diff --git a/player/lua/defaults.lua b/player/lua/defaults.lua
index 512fe0cb54..80630d20b6 100644
--- a/player/lua/defaults.lua
+++ b/player/lua/defaults.lua
@@ -241,6 +241,31 @@ local function message_dispatch(ev)
end
end
+local property_id = 0
+local properties = {}
+
+function mp.observe_property(name, t, cb)
+ local id = property_id + 1
+ property_id = id
+ properties[id] = cb
+ mp.raw_observe_property(id, name, t)
+end
+
+function mp.unobserve_property(cb)
+ for prop_id, prop_cb in pairs(properties) do
+ if cb == prop_cb then
+ properties[prop_id] = nil
+ end
+ end
+end
+
+local function property_change(ev)
+ local prop = properties[ev.id]
+ if prop then
+ prop(ev.name, ev.data)
+ end
+end
+
-- used by default event loop (mp_event_loop()) to decide when to quit
mp.keep_running = true
@@ -286,6 +311,7 @@ end
mp.register_event("shutdown", function() mp.keep_running = false end)
mp.register_event("script-input-dispatch", script_dispatch)
mp.register_event("client-message", message_dispatch)
+mp.register_event("property-change", property_change)
mp.msg = {
log = mp.log,