summaryrefslogtreecommitdiff
path: root/core/services.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/services.cpp')
-rw-r--r--core/services.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/core/services.cpp b/core/services.cpp
index 56ee05e..836b4c6 100644
--- a/core/services.cpp
+++ b/core/services.cpp
@@ -1,6 +1,7 @@
#include "commonheaders.h"
extern std::list<service*> services;
+extern boost::mutex service_list_mutex;
int ServiceExists(const char *name);
void CreateServiceFunction(const char* name, SERVICE svc)
@@ -13,17 +14,20 @@ void* CallService(const char *name,void* data)
{
if(!services.empty())
{
+ service_list_mutex.lock();
std::list<service*>::iterator end = services.end();
for(std::list<service*>::iterator i = services.begin(); i != end; ++i)
{
if(!strcmp((*i)->getName(), name))
return (*i)->getService()(data);
}
+ service_list_mutex.unlock();
}
return 0;
}
int ServiceExists(const char *name)
{
+ service_list_mutex.lock();
if(!services.empty())
{
std::list<service*>::iterator end = services.end();
@@ -31,6 +35,7 @@ int ServiceExists(const char *name)
if(!strcmp((*i)->getName(), name))
return 1;
}
+ service_list_mutex.unlock();
return 0;
}