From 02216aba747685fe3d8c1e7b95d7fc008249fee2 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 9 Jul 2022 22:35:58 +0100 Subject: [PATCH] Allow to redirect Runner emscript calls, needed for exceptions Signed-off-by: falkTX --- Makefile.base.mk | 1 + Makefile.plugins.mk | 2 +- dgl/src/pugl-upstream | 2 +- distrho/extra/Runner.hpp | 15 +++++++++++---- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Makefile.base.mk b/Makefile.base.mk index 2102410f..2dab4bac 100644 --- a/Makefile.base.mk +++ b/Makefile.base.mk @@ -269,6 +269,7 @@ endif ifeq ($(WASM_EXCEPTIONS),true) BUILD_CXX_FLAGS += -fexceptions +LINK_FLAGS += -fexceptions endif ifeq ($(WINDOWS),true) diff --git a/Makefile.plugins.mk b/Makefile.plugins.mk index 8ee9b7ab..99fb613a 100644 --- a/Makefile.plugins.mk +++ b/Makefile.plugins.mk @@ -64,7 +64,7 @@ ifeq ($(WASM),true) JACK_FLAGS += -sUSE_SDL=2 JACK_LIBS += -sUSE_SDL=2 -JACK_LIBS += -sMAIN_MODULE +JACK_LIBS += -sMAIN_MODULE -ldl ifneq ($(FILE_BROWSER_DISABLED),true) JACK_LIBS += -sEXPORTED_RUNTIME_METHODS=FS,cwrap diff --git a/dgl/src/pugl-upstream b/dgl/src/pugl-upstream index c4fd6af2..12b10e4b 160000 --- a/dgl/src/pugl-upstream +++ b/dgl/src/pugl-upstream @@ -1 +1 @@ -Subproject commit c4fd6af2ebd694fcbafeb81619a44ad90639a3b0 +Subproject commit 12b10e4bb38da3a88278becdf3c4f31ea1a86f32 diff --git a/distrho/extra/Runner.hpp b/distrho/extra/Runner.hpp index de35f076..c1fd658b 100644 --- a/distrho/extra/Runner.hpp +++ b/distrho/extra/Runner.hpp @@ -28,6 +28,14 @@ START_NAMESPACE_DISTRHO +#ifdef DISTRHO_RUNNER_INDIRECT_WASM_CALLS +long d_emscripten_set_interval(void (*)(void*), double, void*); +void d_emscripten_clear_interval(long); +#else +# define d_emscripten_set_interval emscripten_set_interval +# define d_emscripten_clear_interval emscripten_clear_interval +#endif + // ------------------------------------------------------------------------------------------------------------------- // Runner class @@ -61,7 +69,6 @@ protected: { } - /* * Destructor. */ @@ -117,7 +124,7 @@ public: return fRunnerThread.startThread(); #else DISTRHO_SAFE_ASSERT_RETURN(fIntervalId == 0, false); - fIntervalId = emscripten_set_interval(_entryPoint, timeIntervalMilliseconds, this); + fIntervalId = d_emscripten_set_interval(_entryPoint, timeIntervalMilliseconds, this); return true; #endif } @@ -146,7 +153,7 @@ public: #else if (fIntervalId != 0) { - emscripten_clear_interval(fIntervalId); + d_emscripten_clear_interval(fIntervalId); fIntervalId = 0; } #endif @@ -223,7 +230,7 @@ private: if (fIntervalId != 0 && !stillRunning) { - emscripten_clear_interval(fIntervalId); + d_emscripten_clear_interval(fIntervalId); fIntervalId = 0; } }