using tuples instead of bad, ugly vC void casts

This commit is contained in:
arthur.jamet
2021-06-03 15:41:32 +02:00
parent d69198ca1b
commit 0b2a151ba6
2 changed files with 8 additions and 7 deletions
+2 -1
View File
@@ -5,4 +5,5 @@ cmake-build-debug
build/*
docs/*
emsdk/
build_web/*
build_web/*
wasm-python.py
+6 -6
View File
@@ -115,8 +115,8 @@ namespace WAL
Callback<Wal &, T &> 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<T>, (void *)paramPtr, 0, 1);
std::tuple iterationParams(this, &update, &state);
return emscripten_set_main_loop_arg((em_arg_callback_func)runIteration<T>, (void *)&iterationParams, 0, 1);
#else
return this->run(update, state);
#endif
@@ -151,10 +151,10 @@ namespace WAL
template<typename T>
static void runIteration(void *param)
{
static void **paramsPtr = (void **)param;
static Wal *wal = (Wal *)paramsPtr[0];
static const Callback<Wal &, T &> callback = *((Callback<Wal &, T &> *)paramsPtr[1]);
static T *state = (T *)paramsPtr[2];
static auto iterationParams = reinterpret_cast<std::tuple<Wal *, Callback<Wal &, T &> *, T *> *>(param);
static const Callback<Wal &, T &> callback = *((Callback<Wal &, T &> *)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);