diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2016-01-23 23:21:22 +0100 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2016-01-23 23:21:22 +0100 | 
| commit | 6f5a92dd172c5b0e424499b0c49cca90865859f6 (patch) | |
| tree | 6f903181db4fe5f448cbd2e2eb718737f4533302 /src | |
| parent | 87c7bce04950b4901fd88343fb966f5ff30d4c0e (diff) | |
Possible fix to missing std::mutex in mingw.
Diffstat (limited to 'src')
| -rw-r--r-- | src/mutex.cc | 20 | ||||
| -rw-r--r-- | src/mutex.h | 8 | 
2 files changed, 12 insertions, 16 deletions
| diff --git a/src/mutex.cc b/src/mutex.cc index 75c7dad..e01bc95 100644 --- a/src/mutex.cc +++ b/src/mutex.cc @@ -31,6 +31,7 @@  #include <windows.h>  #else  #include <pthread.h> +#include <errno.h>  #endif  struct mutex_private_t { @@ -67,6 +68,15 @@ Mutex::~Mutex()  	}  } +bool Mutex::try_lock() +{ +#ifdef WIN32 +	return WaitForSingleObject(prv->mutex, 0) == WAIT_OBJECT_0; +#else +	return pthread_mutex_trylock(&prv->mutex) != EBUSY; +#endif +} +  void Mutex::lock()  {  #ifdef WIN32 @@ -86,16 +96,6 @@ void Mutex::unlock()  #endif  } -#ifdef WIN32 -// Hack: mingw doesn't have std::mutex -namespace std { -bool mutex::try_lock() -{ -	return Mutex::trylock(); -} -} -#endif -  MutexAutolock::MutexAutolock(Mutex &m)  	: mutex(m)  { diff --git a/src/mutex.h b/src/mutex.h index 8c71733..4659a07 100644 --- a/src/mutex.h +++ b/src/mutex.h @@ -34,7 +34,7 @@ public:  	Mutex();  	~Mutex(); -	bool trylock(); +	bool try_lock();  	void lock();  	void unlock(); @@ -45,11 +45,7 @@ private:  #ifdef WIN32  // Hack: mingw doesn't have std::mutex  namespace std { -class mutex -	: public Mutex { -public: -	bool try_lock(); -}; +	class mutex : public Mutex {};  }  #endif | 
