summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-02-14 13:48:08 +0100
committerwm4 <wm4@nowhere>2014-02-14 14:01:27 +0100
commit414c4f93225652fe62541cf6fe37873776670544 (patch)
tree6319481a26d76aeb7d1ea4cd3de708637d408283 /player
parent99e38aee9aa52c9a06772d2a6bd5e5bdf17ebc79 (diff)
downloadmpv-414c4f93225652fe62541cf6fe37873776670544.tar.bz2
mpv-414c4f93225652fe62541cf6fe37873776670544.tar.xz
lua: make register_event() not overwrite previous event handler
Instead, chain them. Note that there's no logic to prevent the other event handlers to be run from an event handler (like it's popular in GUI toolkits), because I think that's not very useful for this purpose.
Diffstat (limited to 'player')
-rw-r--r--player/lua/defaults.lua15
1 files changed, 11 insertions, 4 deletions
diff --git a/player/lua/defaults.lua b/player/lua/defaults.lua
index 1ab1c4264a..8efa8d6315 100644
--- a/player/lua/defaults.lua
+++ b/player/lua/defaults.lua
@@ -135,7 +135,12 @@ mp.keep_running = true
local event_handlers = {}
function mp.register_event(name, cb)
- event_handlers[name] = cb
+ local list = event_handlers[name]
+ if not list then
+ list = {}
+ event_handlers[name] = list
+ end
+ list[#list + 1] = cb
return mp.request_event(name, true)
end
@@ -180,9 +185,11 @@ _G.mp_event_loop = function()
mp.suspend()
more_events = (e.event ~= "none")
if more_events then
- local handler = event_handlers[e.event]
- if handler then
- handler(e)
+ local handlers = event_handlers[e.event]
+ if handlers then
+ for _, handler in ipairs(handlers) do
+ handler(e)
+ end
end
end
end