From 414c4f93225652fe62541cf6fe37873776670544 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 14 Feb 2014 13:48:08 +0100 Subject: 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. --- player/lua/defaults.lua | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'player') 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 -- cgit v1.2.3