Re-enable threads for emscripten;

They don't appear to work very well but this simplifies code a lot.
This commit is contained in:
bjorn 2018-08-30 22:09:54 -07:00
parent 017066d45e
commit f872a5f094
8 changed files with 8 additions and 34 deletions

View File

@ -225,7 +225,7 @@ if(NOT EMSCRIPTEN)
endif()
# pthreads
if(NOT WIN32 AND NOT EMSCRIPTEN)
if(NOT WIN32)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
set(LOVR_PTHREADS Threads::Threads)
@ -242,11 +242,13 @@ set(LOVR_SRC
src/api/lovr.c
src/api/math.c
src/api/physics.c
src/api/thread.c
src/api/timer.c
src/api/types/animator.c
src/api/types/audioStream.c
src/api/types/blob.c
src/api/types/canvas.c
src/api/types/channel.c
src/api/types/collider.c
src/api/types/controller.c
src/api/types/font.c
@ -265,6 +267,7 @@ set(LOVR_SRC
src/api/types/source.c
src/api/types/texture.c
src/api/types/textureData.c
src/api/types/thread.c
src/api/types/transform.c
src/api/types/vertexData.c
src/api/types/world.c
@ -297,6 +300,7 @@ set(LOVR_SRC
src/lib/stb/stb_image_write.c
src/lib/stb/stb_truetype.c
src/lib/stb/stb_vorbis.c
src/lib/tinycthread/tinycthread.c
src/lib/vec/vec.c
src/lovr.c
src/luax.c
@ -309,6 +313,8 @@ set(LOVR_SRC
src/math/vec3.c
src/physics/physics.c
src/resources/shaders.c
src/thread/channel.c
src/thread/thread.c
src/timer/timer.c
src/util.c
${LOVR_AUDIO_SRC}
@ -318,15 +324,7 @@ set(LOVR_SRC
if(EMSCRIPTEN)
set(LOVR_SRC ${LOVR_SRC} src/headset/webvr.c)
else()
set(LOVR_SRC ${LOVR_SRC}
src/headset/openvr.c
src/api/thread.c
src/api/types/channel.c
src/api/types/thread.c
src/lib/tinycthread/tinycthread.c
src/thread/channel.c
src/thread/thread.c
)
set(LOVR_SRC ${LOVR_SRC} src/headset/openvr.c)
endif()
# LÖVR

View File

@ -88,13 +88,11 @@ static int nextEvent(lua_State* L) {
lua_pushboolean(L, event.data.boolean.value);
return 2;
#ifndef EMSCRIPTEN
case EVENT_THREAD_ERROR:
luax_pushobject(L, event.data.thread.thread);
lua_pushstring(L, event.data.thread.error);
free((void*) event.data.thread.error);
return 3;
#endif
case EVENT_CONTROLLER_ADDED:
case EVENT_CONTROLLER_REMOVED:

View File

@ -19,11 +19,7 @@ int l_lovrInit(lua_State* L) {
luax_preloadmodule(L, "lovr.headset", l_lovrHeadsetInit);
luax_preloadmodule(L, "lovr.math", l_lovrMathInit);
luax_preloadmodule(L, "lovr.physics", l_lovrPhysicsInit);
#ifdef EMSCRIPTEN
luax_preloadmodule(L, "lovr.thread", luax_emptymodule);
#else
luax_preloadmodule(L, "lovr.thread", l_lovrThreadInit);
#endif
luax_preloadmodule(L, "lovr.timer", l_lovrTimerInit);
luax_preloadmodule(L, "json", luaopen_cjson);
luax_preloadmodule(L, "enet", luaopen_enet);

View File

@ -1,7 +1,5 @@
#include "headset/headset.h"
#ifndef EMSCRIPTEN
#include "thread/thread.h"
#endif
#include "lib/vec/vec.h"
#include <stdbool.h>
@ -52,12 +50,10 @@ typedef struct {
bool value;
} BoolEvent;
#ifndef EMSCRIPTEN
typedef struct {
Thread* thread;
const char* error;
} ThreadEvent;
#endif
typedef struct {
Controller* controller;
@ -73,9 +69,7 @@ typedef struct {
typedef union {
QuitEvent quit;
BoolEvent boolean;
#ifndef EMSCRIPTEN
ThreadEvent thread;
#endif
ControllerEvent controller;
CustomEvent custom;
} EventData;

View File

@ -6,9 +6,7 @@
#include "headset/headset.h"
#include "math/math.h"
#include "physics/physics.h"
#ifndef EMSCRIPTEN
#include "thread/thread.h"
#endif
#include "timer/timer.h"
#include "resources/boot.lua.h"
#include "lib/glfw.h"

View File

@ -21,11 +21,6 @@ int luax_preloadmodule(lua_State* L, const char* key, lua_CFunction f) {
return 0;
}
int luax_emptymodule(lua_State* L) {
lua_pushnil(L);
return 1;
}
void luax_registerloader(lua_State* L, lua_CFunction loader, int index) {
lua_getglobal(L, "table");
lua_getfield(L, -1, "insert");

View File

@ -10,7 +10,6 @@
#define luax_checktype(L, i, T) ((T*) _luax_checktype(L, i, #T))
int luax_preloadmodule(lua_State* L, const char* key, lua_CFunction f);
int luax_emptymodule(lua_State* L);
void luax_registerloader(lua_State* L, lua_CFunction loader, int index);
void luax_registertype(lua_State* L, const char* name, const luaL_Reg* functions);
void luax_extendtype(lua_State* L, const char* base, const char* name, const luaL_Reg* baseFunctions, const luaL_Reg* functions);

View File

@ -1,9 +1,5 @@
#include "lib/vec/vec.h"
#ifdef EMSCRIPTEN
#define _Thread_local
#else
#include "lib/tinycthread/tinycthread.h"
#endif
#include <stdint.h>
#include <stddef.h>