summaryrefslogtreecommitdiff
path: root/core/events.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2011-03-17 21:39:28 +0200
committerGluzskiy Alexandr <sss123next@list.ru>2011-03-17 21:39:28 +0200
commitc6ceb73febc0f5afcd01341a16dca768d5c627cd (patch)
tree98af5a8032b8d5e9dfa75f78ba92476f26c74bc3 /core/events.cpp
parent4c917f2e2a43ea50cd287dd322dda9d08b213b7d (diff)
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
Diffstat (limited to 'core/events.cpp')
-rw-r--r--core/events.cpp25
1 files changed, 18 insertions, 7 deletions
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<evt_handler*> 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<evt_handler*>::iterator end = event_handlers.end();
for(std::list<evt_handler*>::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<plugin*>::iterator end = plugins.end();
+ for(std::list<plugin*>::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<evt_handler*>::iterator end = event_handlers.end();
for(std::list<evt_handler*>::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;
}