Browse Source

Add RWLockDummy for NO_THREADS builds

Leon Krause 7 years ago
parent
commit
25800ffb0e

+ 0 - 21
core/class_db.cpp

@@ -33,18 +33,9 @@
 #include "os/mutex.h"
 #include "os/mutex.h"
 #include "version.h"
 #include "version.h"
 
 
-#ifdef NO_THREADS
-
-#define OBJTYPE_RLOCK
-#define OBJTYPE_WLOCK
-
-#else
-
 #define OBJTYPE_RLOCK RWLockRead _rw_lockr_(lock);
 #define OBJTYPE_RLOCK RWLockRead _rw_lockr_(lock);
 #define OBJTYPE_WLOCK RWLockWrite _rw_lockw_(lock);
 #define OBJTYPE_WLOCK RWLockWrite _rw_lockw_(lock);
 
 
-#endif
-
 #ifdef DEBUG_METHODS_ENABLED
 #ifdef DEBUG_METHODS_ENABLED
 
 
 MethodDefinition D_METHOD(const char *p_name) {
 MethodDefinition D_METHOD(const char *p_name) {
@@ -895,15 +886,9 @@ void ClassDB::add_property_group(StringName p_class, const String &p_name, const
 
 
 void ClassDB::add_property(StringName p_class, const PropertyInfo &p_pinfo, const StringName &p_setter, const StringName &p_getter, int p_index) {
 void ClassDB::add_property(StringName p_class, const PropertyInfo &p_pinfo, const StringName &p_setter, const StringName &p_getter, int p_index) {
 
 
-#ifndef NO_THREADS
 	lock->read_lock();
 	lock->read_lock();
-#endif
-
 	ClassInfo *type = classes.getptr(p_class);
 	ClassInfo *type = classes.getptr(p_class);
-
-#ifndef NO_THREADS
 	lock->read_unlock();
 	lock->read_unlock();
-#endif
 
 
 	ERR_FAIL_COND(!type);
 	ERR_FAIL_COND(!type);
 
 
@@ -1380,10 +1365,7 @@ RWLock *ClassDB::lock = NULL;
 
 
 void ClassDB::init() {
 void ClassDB::init() {
 
 
-#ifndef NO_THREADS
-
 	lock = RWLock::create();
 	lock = RWLock::create();
-#endif
 }
 }
 
 
 void ClassDB::cleanup() {
 void ClassDB::cleanup() {
@@ -1406,10 +1388,7 @@ void ClassDB::cleanup() {
 	resource_base_extensions.clear();
 	resource_base_extensions.clear();
 	compat_classes.clear();
 	compat_classes.clear();
 
 
-#ifndef NO_THREADS
-
 	memdelete(lock);
 	memdelete(lock);
-#endif
 }
 }
 
 
 //
 //

+ 8 - 0
core/os/thread_dummy.cpp

@@ -55,3 +55,11 @@ Semaphore *SemaphoreDummy::create() {
 void SemaphoreDummy::make_default() {
 void SemaphoreDummy::make_default() {
 	Semaphore::create_func = &SemaphoreDummy::create;
 	Semaphore::create_func = &SemaphoreDummy::create;
 };
 };
+
+RWLock *RWLockDummy::create() {
+	return memnew(RWLockDummy);
+};
+
+void RWLockDummy::make_default() {
+	RWLock::create_func = &RWLockDummy::create;
+};

+ 17 - 0
core/os/thread_dummy.h

@@ -32,6 +32,7 @@
 #define THREAD_DUMMY_H
 #define THREAD_DUMMY_H
 
 
 #include "mutex.h"
 #include "mutex.h"
+#include "rw_lock.h"
 #include "semaphore.h"
 #include "semaphore.h"
 #include "thread.h"
 #include "thread.h"
 
 
@@ -69,4 +70,20 @@ public:
 	static void make_default();
 	static void make_default();
 };
 };
 
 
+class RWLockDummy : public RWLock {
+
+	static RWLock *create();
+
+public:
+	virtual void read_lock() {}
+	virtual void read_unlock() {}
+	virtual Error read_try_lock() { return OK; }
+
+	virtual void write_lock() {}
+	virtual void write_unlock() {}
+	virtual Error write_try_lock() { return OK; }
+
+	static void make_default();
+};
+
 #endif
 #endif

+ 2 - 1
drivers/unix/os_unix.cpp

@@ -89,10 +89,11 @@ void handle_sigchld(int sig) {
 
 
 void OS_Unix::initialize_core() {
 void OS_Unix::initialize_core() {
 
 
-#ifdef NO_PTHREADS
+#ifdef NO_THREADS
 	ThreadDummy::make_default();
 	ThreadDummy::make_default();
 	SemaphoreDummy::make_default();
 	SemaphoreDummy::make_default();
 	MutexDummy::make_default();
 	MutexDummy::make_default();
+	RWLockDummy::make_default();
 #else
 #else
 	ThreadPosix::make_default();
 	ThreadPosix::make_default();
 	SemaphorePosix::make_default();
 	SemaphorePosix::make_default();

+ 1 - 1
drivers/unix/thread_posix.cpp

@@ -31,7 +31,7 @@
 #include "thread_posix.h"
 #include "thread_posix.h"
 #include "script_language.h"
 #include "script_language.h"
 
 
-#if defined(UNIX_ENABLED) || defined(PTHREAD_ENABLED)
+#if (defined(UNIX_ENABLED) || defined(PTHREAD_ENABLED)) && !defined(NO_THREADS)
 
 
 #ifdef PTHREAD_BSD_SET_NAME
 #ifdef PTHREAD_BSD_SET_NAME
 #include <pthread_np.h>
 #include <pthread_np.h>

+ 1 - 1
drivers/unix/thread_posix.h

@@ -35,7 +35,7 @@
 	@author Juan Linietsky <[email protected]>
 	@author Juan Linietsky <[email protected]>
 */
 */
 
 
-#if defined(UNIX_ENABLED) || defined(PTHREAD_ENABLED)
+#if (defined(UNIX_ENABLED) || defined(PTHREAD_ENABLED)) && !defined(NO_THREADS)
 
 
 #include "os/thread.h"
 #include "os/thread.h"
 #include <pthread.h>
 #include <pthread.h>

+ 1 - 1
platform/javascript/detect.py

@@ -103,7 +103,7 @@ def configure(env):
     ## Compile flags
     ## Compile flags
 
 
     env.Append(CPPPATH=['#platform/javascript'])
     env.Append(CPPPATH=['#platform/javascript'])
-    env.Append(CPPFLAGS=['-DJAVASCRIPT_ENABLED', '-DUNIX_ENABLED', '-DPTHREAD_NO_RENAME', '-DTYPED_METHOD_BIND', '-DNO_THREADS'])
+    env.Append(CPPFLAGS=['-DJAVASCRIPT_ENABLED', '-DUNIX_ENABLED', '-DTYPED_METHOD_BIND', '-DNO_THREADS'])
     env.Append(CPPFLAGS=['-DGLES3_ENABLED'])
     env.Append(CPPFLAGS=['-DGLES3_ENABLED'])
 
 
     # These flags help keep the file size down
     # These flags help keep the file size down