Use std::mutex instead of ArchMutex in EventQueue

This commit is contained in:
Povilas Kanapickas 2019-08-17 16:40:20 +03:00
parent f71c68506e
commit 9df4741748
2 changed files with 13 additions and 16 deletions

View File

@ -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;

View File

@ -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;