Add RWLockDummy for NO_THREADS builds
This commit is contained in:
parent
c4a8b8f7c5
commit
25800ffb0e
7 changed files with 30 additions and 25 deletions
|
@ -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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -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;
|
||||||
|
};
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue