mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 01:05:48 +01:00 
			
		
		
		
	Fix C++11 compilability
Previous commits broke it... :(
This commit is contained in:
		@@ -68,7 +68,7 @@ public:
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
ScriptApiBase::ScriptApiBase() :
 | 
			
		||||
	m_luastackmutex(true)
 | 
			
		||||
	m_luastackmutex()
 | 
			
		||||
{
 | 
			
		||||
#ifdef SCRIPTAPI_LOCK_DEBUG
 | 
			
		||||
	m_lock_recursion_count = 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -108,7 +108,7 @@ protected:
 | 
			
		||||
	void objectrefGetOrCreate(lua_State *L, ServerActiveObject *cobj);
 | 
			
		||||
	void objectrefGet(lua_State *L, u16 id);
 | 
			
		||||
 | 
			
		||||
	Mutex           m_luastackmutex;
 | 
			
		||||
	RecursiveMutex  m_luastackmutex;
 | 
			
		||||
	std::string     m_last_run_mod;
 | 
			
		||||
	bool            m_secure;
 | 
			
		||||
#ifdef SCRIPTAPI_LOCK_DEBUG
 | 
			
		||||
 
 | 
			
		||||
@@ -75,7 +75,7 @@ private:
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define SCRIPTAPI_PRECHECKHEADER                                               \
 | 
			
		||||
		MutexAutoLock scriptlock(this->m_luastackmutex);                       \
 | 
			
		||||
		RecursiveMutexAutoLock scriptlock(this->m_luastackmutex);              \
 | 
			
		||||
		SCRIPTAPI_LOCK_CHECK;                                                  \
 | 
			
		||||
		realityCheck();                                                        \
 | 
			
		||||
		lua_State *L = getStack();                                             \
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,7 @@ DEALINGS IN THE SOFTWARE.
 | 
			
		||||
#if __cplusplus >= 201103L
 | 
			
		||||
	#include <condition_variable>
 | 
			
		||||
	#include "threading/mutex.h"
 | 
			
		||||
	#include "threading/mutex_auto_lock.h"
 | 
			
		||||
#elif defined(_WIN32)
 | 
			
		||||
	#ifndef WIN32_LEAN_AND_MEAN
 | 
			
		||||
		#define WIN32_LEAN_AND_MEAN
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,18 @@ DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 | 
			
		||||
#define UNUSED(expr) do { (void)(expr); } while (0)
 | 
			
		||||
 | 
			
		||||
Mutex::Mutex()
 | 
			
		||||
{
 | 
			
		||||
	init_mutex(false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Mutex::Mutex(bool recursive)
 | 
			
		||||
{
 | 
			
		||||
	init_mutex(recursive);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Mutex::init_mutex(bool recursive)
 | 
			
		||||
{
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
	// Windows critical sections are recursive by default
 | 
			
		||||
@@ -89,5 +100,9 @@ void Mutex::unlock()
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
RecursiveMutex::RecursiveMutex()
 | 
			
		||||
	: Mutex(true)
 | 
			
		||||
{}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@ DEALINGS IN THE SOFTWARE.
 | 
			
		||||
#if __cplusplus >= 201103L && !defined(_WIN32)
 | 
			
		||||
	#include <mutex>
 | 
			
		||||
	using Mutex = std::mutex;
 | 
			
		||||
	using RecursiveMutex = std::recursive_mutex;
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
@@ -49,11 +50,14 @@ DEALINGS IN THE SOFTWARE.
 | 
			
		||||
class Mutex
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	Mutex(bool recursive=false);
 | 
			
		||||
	Mutex();
 | 
			
		||||
	~Mutex();
 | 
			
		||||
	void lock();
 | 
			
		||||
	void unlock();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
	Mutex(bool recursive);
 | 
			
		||||
	void init_mutex(bool recursive);
 | 
			
		||||
private:
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
	CRITICAL_SECTION mutex;
 | 
			
		||||
@@ -64,6 +68,14 @@ private:
 | 
			
		||||
	DISABLE_CLASS_COPY(Mutex);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class RecursiveMutex : public Mutex
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	RecursiveMutex();
 | 
			
		||||
 | 
			
		||||
	DISABLE_CLASS_COPY(RecursiveMutex);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif  // C++11
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,8 @@ DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 | 
			
		||||
#if __cplusplus >= 201103L
 | 
			
		||||
	#include <mutex>
 | 
			
		||||
	using MutexAutoLock = std::lock_guard<std::mutex>;
 | 
			
		||||
	using MutexAutoLock = std::unique_lock<std::mutex>;
 | 
			
		||||
	using RecursiveMutexAutoLock = std::unique_lock<std::recursive_mutex>;
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#include "threading/mutex.h"
 | 
			
		||||
@@ -44,6 +45,15 @@ private:
 | 
			
		||||
	Mutex &mutex;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class RecursiveMutexAutoLock
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
	RecursiveMutexAutoLock(RecursiveMutex &m) : mutex(m) { mutex.lock(); }
 | 
			
		||||
	~RecursiveMutexAutoLock() { mutex.unlock(); }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
	RecursiveMutex &mutex;
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user