fix JS event loop blocking

This commit is contained in:
Adam Powers
2020-09-06 17:32:08 -07:00
parent 045a5879f1
commit 96cf11ad71
6 changed files with 229 additions and 247 deletions

View File

@@ -1,28 +1,37 @@
#include <stdio.h>
#include <stdarg.h>
/* external functions */
int nhmain(int argc, char *argv[]);
typedef void(*stub_callback_t)(const char *name, void *ret_ptr, const char *fmt, ...);
void stub_graphics_set_callback(stub_callback_t cb);
void shim_graphics_set_callback(stub_callback_t cb);
/* forward declarations */
void window_cb(const char *name, void *ret_ptr, const char *fmt, ...);
void *yourFunctionToRenderGraphics(const char *name, va_list args);
int main(int argc, char *argv[]) {
stub_graphics_set_callback(window_cb);
shim_graphics_set_callback(window_cb);
nhmain(argc, argv);
}
void window_cb(const char *name, void *ret_ptr, const char *fmt, ...) {
/* TODO -- see windowCallback below for hints */
void *yourFunctionToRenderGraphics(const char *name, va_list args) {
printf("yourFunctionToRenderGraphics name %s\n", name);
/* DO SOMETHING HERE */
*ret_ptr = yourFunctionToRenderGraphics(name, va_list args);
return NULL;
}
void window_cb(const char *name, void *ret_ptr, const char *fmt, ...) {
void *ret;
va_list args;
/* TODO -- see windowCallback below for hints */
va_start(args, fmt);
ret = yourFunctionToRenderGraphics(name, args);
// *((int *)ret_ptr = *((int *)ret); // e.g. yourFunctionToRenderGraphics returns an int
va_end(args);
}
#if 0
function variadicCallback(name, retPtr, fmt, args) {