Add RWLockDummy for NO_THREADS builds

This commit is contained in:
Leon Krause 2018-03-20 04:15:27 +01:00
parent c4a8b8f7c5
commit 25800ffb0e
7 changed files with 30 additions and 25 deletions

View File

@ -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
} }
// //

View File

@ -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;
};

View File

@ -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

View File

@ -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();

View File

@ -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>

View File

@ -35,7 +35,7 @@
@author Juan Linietsky <reduzio@gmail.com> @author Juan Linietsky <reduzio@gmail.com>
*/ */
#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>

View File

@ -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