From c6ceb73febc0f5afcd01341a16dca768d5c627cd Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Thu, 17 Mar 2011 21:39:28 +0200 Subject: modified: api/ec_pluginapi.h modified: core/events.cpp modified: core/events.h modified: core/globals.h modified: core/modules.cpp modified: core/modules.h --- core/events.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'core/events.cpp') diff --git a/core/events.cpp b/core/events.cpp index b4a2396..4d206c8 100644 --- a/core/events.cpp +++ b/core/events.cpp @@ -16,9 +16,6 @@ #include "commonheaders.h" -extern std::list event_handlers; -extern boost::mutex event_handlers_mutex; - const int evt_handler::getType() { @@ -43,7 +40,6 @@ bool RegisterEventHandler(int type, EVENT_HANDLER func) { if(!event_handlers.empty()) { - event_handlers_mutex.lock(); std::list::iterator end = event_handlers.end(); for(std::list::iterator i = event_handlers.begin(); i != end; ++i) { @@ -55,19 +51,34 @@ bool RegisterEventHandler(int type, EVENT_HANDLER func) } return true; } -int RegisterEventType(int type) +int RegisterEventType(int type, int specialid) { + plugin *p = NULL; + if(!plugins.empty()) + { + std::list::iterator end = plugins.end(); + for(std::list::iterator i = plugins.begin(); i!= end; ++i) + { + if((*i)->get_plugin_id() == specialid) + { + p = *i; + break; + } + } + if(!p) + return 1; + } if(!event_handlers.empty()) { - event_handlers_mutex.lock(); std::list::iterator end = event_handlers.end(); for(std::list::iterator i = event_handlers.begin(); i != end; ++i) { if((*i)->getType() == type) - return -1; + return 1; } } event_handlers.push_back(new evt_handler(type)); + p->register_event(type); return 0; } -- cgit v1.2.3