diff --git a/.gitignore b/.gitignore index 7c2238fc..f93eff30 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ cmake-build-debug build/* docs/* emsdk/ -build_web/* \ No newline at end of file +build_web/* +wasm-python.py \ No newline at end of file diff --git a/lib/wal/sources/Wal.hpp b/lib/wal/sources/Wal.hpp index a2feacbe..3785081a 100644 --- a/lib/wal/sources/Wal.hpp +++ b/lib/wal/sources/Wal.hpp @@ -115,8 +115,8 @@ namespace WAL Callback update(callback); #if defined(PLATFORM_WEB) - void *paramPtr[3] = {(void *)this, (void *)&update, (void *)&state}; - return emscripten_set_main_loop_arg((em_arg_callback_func)runIteration, (void *)paramPtr, 0, 1); + std::tuple iterationParams(this, &update, &state); + return emscripten_set_main_loop_arg((em_arg_callback_func)runIteration, (void *)&iterationParams, 0, 1); #else return this->run(update, state); #endif @@ -151,10 +151,10 @@ namespace WAL template static void runIteration(void *param) { - static void **paramsPtr = (void **)param; - static Wal *wal = (Wal *)paramsPtr[0]; - static const Callback callback = *((Callback *)paramsPtr[1]); - static T *state = (T *)paramsPtr[2]; + static auto iterationParams = reinterpret_cast *, T *> *>(param); + static const Callback callback = *((Callback *)std::get<1>(*iterationParams)); + static T *state = (T *)std::get<2>(*iterationParams); + static Wal *wal = (Wal *)std::get<0>(*iterationParams); static auto lastTick = std::chrono::steady_clock::now(); static std::chrono::nanoseconds fBehind(0);