mirror of
https://github.com/azahar-emu/ArticSetupTool
synced 2025-11-06 23:20:00 +01:00
42 lines
882 B
C++
42 lines
882 B
C++
#ifndef CTRPLUGINFRAMEWORK_SYSTEM_MUTEX_HPP
|
|
#define CTRPLUGINFRAMEWORK_SYSTEM_MUTEX_HPP
|
|
|
|
#include "3ds.h"
|
|
|
|
namespace CTRPluginFramework
|
|
{
|
|
class Mutex
|
|
{
|
|
public:
|
|
inline Mutex(void) {
|
|
RecursiveLock_Init(&_lock);
|
|
}
|
|
inline ~Mutex(void) {
|
|
// I suppose that we can "force" unlock the mutex
|
|
if (_lock.counter > 0)
|
|
{
|
|
_lock.counter = 1;
|
|
RecursiveLock_Unlock(&_lock);
|
|
}
|
|
}
|
|
|
|
inline void Lock(void) {
|
|
RecursiveLock_Lock(&_lock);
|
|
}
|
|
|
|
// Return true on failure
|
|
inline bool TryLock(void) {
|
|
return RecursiveLock_TryLock(&_lock) != 0;
|
|
}
|
|
|
|
inline void Unlock(void) {
|
|
RecursiveLock_Unlock(&_lock);
|
|
}
|
|
|
|
private:
|
|
RecursiveLock _lock;
|
|
};
|
|
}
|
|
|
|
#endif
|