moduleapi, modulemanager: Re-structure module.event_handlers so that the same handler...
authorMatthew Wild <mwild1@gmail.com>
Fri, 18 May 2012 22:53:02 +0000 (23:53 +0100)
committerMatthew Wild <mwild1@gmail.com>
Fri, 18 May 2012 22:53:02 +0000 (23:53 +0100)
core/moduleapi.lua
core/modulemanager.lua

index 44c84de1cd2ce83d9e70aa1cf4f5eeaf9616b5c7..96f1d3ea2a9a9744430ec219b5c147d19d77caf1 100644 (file)
@@ -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
 
index b9f221c88c24a47b230ca6379e7c4658d6934997..417dedbe34d7c2c1517f5d4995a11bb550a39616 100644 (file)
@@ -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