diff options
author | wm4 <wm4@nowhere> | 2014-04-08 21:10:00 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-04-08 21:10:00 +0200 |
commit | a94020e25bc5fc50ac0cea132a4cccb7743e85fa (patch) | |
tree | b18f44436bae70ce7833c4ff5247cc1fdd2793e1 /player/lua | |
parent | 708f32b74677ae3fac00ecabfbfd866426b06586 (diff) | |
download | mpv-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')
-rw-r--r-- | player/lua/defaults.lua | 26 |
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, |