aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/base')
-rw-r--r--src/lib/base/EventQueue.cpp24
-rw-r--r--src/lib/base/EventQueue.h5
-rw-r--r--src/lib/base/Log.cpp16
-rw-r--r--src/lib/base/Log.h3
4 files changed, 21 insertions, 27 deletions
diff --git a/src/lib/base/EventQueue.cpp b/src/lib/base/EventQueue.cpp
index b17e35b..fe8cff5 100644
--- a/src/lib/base/EventQueue.cpp
+++ b/src/lib/base/EventQueue.cpp
@@ -90,7 +90,6 @@ EventQueue::EventQueue() :
m_readyMutex(new Mutex),
m_readyCondVar(new CondVar<bool>(m_readyMutex, false))
{
- m_mutex = ARCH->newMutex();
ARCH->setSignalHandler(Arch::kINTERRUPT, &interrupt, this);
ARCH->setSignalHandler(Arch::kTERMINATE, &interrupt, this);
m_buffer = new SimpleEventQueueBuffer;
@@ -104,7 +103,6 @@ EventQueue::~EventQueue()
ARCH->setSignalHandler(Arch::kINTERRUPT, NULL, NULL);
ARCH->setSignalHandler(Arch::kTERMINATE, NULL, NULL);
- ARCH->closeMutex(m_mutex);
}
void
@@ -136,7 +134,7 @@ EventQueue::loop()
Event::Type
EventQueue::registerTypeOnce(Event::Type& type, const char* name)
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
if (type == Event::kUnknown) {
m_typeMap.insert(std::make_pair(m_nextType, name));
m_nameMap.insert(std::make_pair(name, m_nextType));
@@ -176,7 +174,7 @@ EventQueue::getTypeName(Event::Type type)
void
EventQueue::adoptBuffer(IEventQueueBuffer* buffer)
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
LOG((CLOG_DEBUG "adopting new buffer"));
@@ -261,7 +259,7 @@ retry:
case IEventQueueBuffer::kUser:
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
event = removeEvent(dataID);
return true;
}
@@ -316,7 +314,7 @@ EventQueue::addEvent(const Event& event)
void
EventQueue::addEventToBuffer(const Event& event)
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
// store the event's data locally
UInt32 eventID = saveEvent(event);
@@ -338,7 +336,7 @@ EventQueue::newTimer(double duration, void* target)
if (target == NULL) {
target = timer;
}
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
m_timers.insert(timer);
// initial duration is requested duration plus whatever's on
// the clock currently because the latter will be subtracted
@@ -357,7 +355,7 @@ EventQueue::newOneShotTimer(double duration, void* target)
if (target == NULL) {
target = timer;
}
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
m_timers.insert(timer);
// initial duration is requested duration plus whatever's on
// the clock currently because the latter will be subtracted
@@ -370,7 +368,7 @@ EventQueue::newOneShotTimer(double duration, void* target)
void
EventQueue::deleteTimer(EventQueueTimer* timer)
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
for (TimerQueue::iterator index = m_timerQueue.begin();
index != m_timerQueue.end(); ++index) {
if (index->getTimer() == timer) {
@@ -388,7 +386,7 @@ EventQueue::deleteTimer(EventQueueTimer* timer)
void
EventQueue::adoptHandler(Event::Type type, void* target, IEventJob* handler)
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
IEventJob*& job = m_handlers[target][type];
delete job;
job = handler;
@@ -399,7 +397,7 @@ EventQueue::removeHandler(Event::Type type, void* target)
{
IEventJob* handler = NULL;
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
HandlerTable::iterator index = m_handlers.find(target);
if (index != m_handlers.end()) {
TypeHandlerTable& typeHandlers = index->second;
@@ -418,7 +416,7 @@ EventQueue::removeHandlers(void* target)
{
std::vector<IEventJob*> handlers;
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
HandlerTable::iterator index = m_handlers.find(target);
if (index != m_handlers.end()) {
// copy to handlers array and clear table for target
@@ -447,7 +445,7 @@ EventQueue::isEmpty() const
IEventJob*
EventQueue::getHandler(Event::Type type, void* target) const
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
HandlerTable::const_iterator index = m_handlers.find(target);
if (index != m_handlers.end()) {
const TypeHandlerTable& typeHandlers = index->second;
diff --git a/src/lib/base/EventQueue.h b/src/lib/base/EventQueue.h
index 97e7fba..0a2179b 100644
--- a/src/lib/base/EventQueue.h
+++ b/src/lib/base/EventQueue.h
@@ -28,10 +28,9 @@
#include "common/stdset.h"
#include "base/NonBlockingStream.h"
+#include <mutex>
#include <queue>
-class Mutex;
-
//! Event queue
/*!
An event queue that implements the platform independent parts and
@@ -114,7 +113,7 @@ private:
typedef std::map<void*, TypeHandlerTable> HandlerTable;
int m_systemTarget;
- ArchMutex m_mutex;
+ mutable std::mutex m_mutex;
// registered events
Event::Type m_nextType;
diff --git a/src/lib/base/Log.cpp b/src/lib/base/Log.cpp
index 823bf6d..1252ed9 100644
--- a/src/lib/base/Log.cpp
+++ b/src/lib/base/Log.cpp
@@ -63,9 +63,6 @@ Log::Log()
{
assert(s_log == NULL);
- // create mutex for multithread safe operation
- m_mutex = ARCH->newMutex();
-
// other initalization
m_maxPriority = g_defaultMaxPriority;
m_maxNewlineLength = 0;
@@ -90,7 +87,6 @@ Log::~Log()
index != m_alwaysOutputters.end(); ++index) {
delete *index;
}
- ARCH->closeMutex(m_mutex);
}
Log*
@@ -214,7 +210,7 @@ Log::insert(ILogOutputter* outputter, bool alwaysAtHead)
{
assert(outputter != NULL);
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
if (alwaysAtHead) {
m_alwaysOutputters.push_front(outputter);
}
@@ -237,7 +233,7 @@ Log::insert(ILogOutputter* outputter, bool alwaysAtHead)
void
Log::remove(ILogOutputter* outputter)
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
m_outputters.remove(outputter);
m_alwaysOutputters.remove(outputter);
}
@@ -245,7 +241,7 @@ Log::remove(ILogOutputter* outputter)
void
Log::pop_front(bool alwaysAtHead)
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
OutputterList* list = alwaysAtHead ? &m_alwaysOutputters : &m_outputters;
if (!list->empty()) {
delete list->front();
@@ -271,14 +267,14 @@ Log::setFilter(const char* maxPriority)
void
Log::setFilter(int maxPriority)
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
m_maxPriority = maxPriority;
}
int
Log::getFilter() const
{
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
return m_maxPriority;
}
@@ -289,7 +285,7 @@ Log::output(ELevel priority, char* msg)
assert(msg != NULL);
if (!msg) return;
- ArchMutexLock lock(m_mutex);
+ std::lock_guard<std::mutex> lock(m_mutex);
OutputterList::const_iterator i;
diff --git a/src/lib/base/Log.h b/src/lib/base/Log.h
index 1d09be2..0ed458f 100644
--- a/src/lib/base/Log.h
+++ b/src/lib/base/Log.h
@@ -24,6 +24,7 @@
#include "common/stdlist.h"
#include <stdarg.h>
+#include <mutex>
#define CLOG (Log::getInstance())
#define BYE "\nTry `%s --help' for more information."
@@ -132,7 +133,7 @@ private:
static Log* s_log;
- ArchMutex m_mutex;
+ mutable std::mutex m_mutex;
OutputterList m_outputters;
OutputterList m_alwaysOutputters;
int m_maxNewlineLength;