aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/moduleapi.lua7
-rw-r--r--core/modulemanager.lua4
2 files changed, 8 insertions, 3 deletions
diff --git a/core/moduleapi.lua b/core/moduleapi.lua
index 44c84de1..96f1d3ea 100644
--- a/core/moduleapi.lua
+++ b/core/moduleapi.lua
@@ -70,7 +70,12 @@ function api:fire_event(...)
end
function api:hook_object_event(object, event, handler, priority)
- self.event_handlers[handler] = { name = event, priority = priority, object = object };
+ local handlers = self.event_handlers[event];
+ if not handlers then
+ handlers = {};
+ self.event_handlers[event] = handlers;
+ end
+ handlers[event] = { handler = handler, priority = priority, object = object };
return object.add_handler(event, handler, priority);
end
diff --git a/core/modulemanager.lua b/core/modulemanager.lua
index b9f221c8..417dedbe 100644
--- a/core/modulemanager.lua
+++ b/core/modulemanager.lua
@@ -91,8 +91,8 @@ local function do_unload_module(host, name)
end
end
- for handler, event in pairs(mod.module.event_handlers) do
- event.object.remove_handler(event.name, handler);
+ for event, data in pairs(mod.module.event_handlers) do
+ data.object.remove_handler(event, data.handler);
end
if mod.module.items then -- remove items