rssguard/src/librssguard/miscellaneous/mutex.cpp
2020-08-12 09:48:06 +02:00

59 lines
986 B
C++

// For license of this file, see <project-root-folder>/LICENSE.md.
#include "miscellaneous/mutex.h"
#include "definitions/definitions.h"
Mutex::Mutex(QMutex::RecursionMode mode, QObject* parent) : QObject(parent), m_mutex(new QMutex(mode)), m_isLocked(false) {}
Mutex::~Mutex() {
qDebugNN << LOGSEC_CORE << ("Destroying Mutex instance.");
}
void Mutex::lock() {
m_mutex->lock();
setLocked();
}
bool Mutex::tryLock() {
bool result;
if ((result = m_mutex->tryLock())) {
setLocked();
}
return result;
}
bool Mutex::tryLock(int timeout) {
bool result;
if ((result = m_mutex->tryLock(timeout))) {
setLocked();
}
return result;
}
void Mutex::unlock() {
m_mutex->unlock();
setUnlocked();
}
void Mutex::setLocked() {
m_isLocked = true;
emit locked();
}
void Mutex::setUnlocked() {
m_isLocked = false;
emit unlocked();
}
bool Mutex::isLocked() const {
return m_isLocked;
}
Mutex::operator QMutex* () const {
return m_mutex.data();
}