From 444aa9ec6ee6ab91b437741bed44a24979c179b6 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Fri, 22 Aug 2025 16:25:59 +0200 Subject: [PATCH] Plugin fixes --- base/plugins/plugin_api.c | 56 +++++++++++++++++++-------------------- base/plugins/plugin_api.h | 18 ++++++------- base/sources/iron.h | 24 ++++++++--------- 3 files changed, 48 insertions(+), 50 deletions(-) diff --git a/base/plugins/plugin_api.c b/base/plugins/plugin_api.c index a6ba9d86..bcfeb35f 100644 --- a/base/plugins/plugin_api.c +++ b/base/plugins/plugin_api.c @@ -439,8 +439,8 @@ VOID_FN_CB(context_set_viewport_shader) void node_shader_add_constant(void *p, char *s0, char *s1, bool b); FN(node_shader_add_constant) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); char *s0 = (char *)JS_ToCString(ctx, argv[1]); char *s1 = (char *)JS_ToCString(ctx, argv[2]); node_shader_add_constant((void *)p, s0, s1, false); @@ -458,8 +458,8 @@ FN(gpu_create_texture_from_bytes) { JS_ToInt64(ctx, &w, argv[1]); int64_t h; JS_ToInt64(ctx, &h, argv[2]); - int64_t result = (int64_t)gpu_create_texture_from_bytes(&b, w, h, 0); - return JS_NewInt64(ctx, result); + uint64_t result = (uint64_t)gpu_create_texture_from_bytes(&b, w, h, 0); + return JS_NewBigUint64(ctx, result); } extern char *project_filepath; @@ -474,14 +474,14 @@ FN(project_save) { } FN(ui_handle_create) { - int64_t result = (int64_t)ui_handle_create(); + uint64_t result = (uint64_t)ui_handle_create(); any_array_push(plugin_gc, (void *)result); - return JS_NewInt64(ctx, result); + return JS_NewBigUint64(ctx, result); } FN(ui_handle_set_value) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); ui_handle_t *h = (ui_handle_t *)p; double d; JS_ToFloat64(ctx, &d, argv[1]); @@ -490,15 +490,15 @@ FN(ui_handle_set_value) { } FN(ui_handle_get_value) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); ui_handle_t *h = (ui_handle_t *)p; return JS_NewFloat64(ctx, h->value); } FN(ui_panel) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); char *s = (char *)JS_ToCString(ctx, argv[1]); bool result = ui_panel((void *)p, s, false, false); return JS_NewBool(ctx, result); @@ -517,16 +517,16 @@ FN(ui_text) { } FN(ui_text_input) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); char *s = (char *)JS_ToCString(ctx, argv[1]); ui_text_input((void *)p, s, UI_ALIGN_LEFT, true, false); return JS_UNDEFINED; } FN(ui_slider) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); char *s = (char *)JS_ToCString(ctx, argv[1]); double from = 0.0; double to = 1.0; @@ -549,16 +549,16 @@ FN(ui_slider) { } FN(ui_check) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); char *s = (char *)JS_ToCString(ctx, argv[1]); ui_check((void *)p, s, ""); return JS_UNDEFINED; } FN(ui_radio) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); int32_t pos; JS_ToInt32(ctx, &pos, argv[1]); char *s = (char *)JS_ToCString(ctx, argv[2]); @@ -582,8 +582,8 @@ FN(ui_row) { } FN(ui_combo) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); JSValue val_len = JS_GetPropertyStr(ctx, argv[1], "length"); int len; @@ -639,13 +639,13 @@ FN(parser_material_custom_nodes_delete) { extern void *parser_material_kong; FN(parser_material_kong_get) { - return JS_NewInt64(ctx, (int64_t)parser_material_kong); + return JS_NewBigUint64(ctx, (uint64_t)parser_material_kong); } char *parser_material_parse_value_input(void *inp, bool vector_as_grayscale); FN(parser_material_parse_value_input) { - int64_t *node; - JS_ToInt64(ctx, &node, argv[0]); + uint64_t *node; + JS_ToBigUint64(ctx, &node, argv[0]); int64_t i; JS_ToInt64(ctx, &i, argv[1]); char *s = parser_material_parse_value_input(((ui_node_t *)node)->inputs->buffer[i], false); @@ -771,13 +771,13 @@ FN(plugin_api_make_raw_mesh) { JS_ToFloat64(ctx, &d, argv[4]); mesh->scale_pos = d; mesh->scale_tex = 1.0; - return JS_NewInt64(ctx, (int64_t)mesh); + return JS_NewBigUint64(ctx, (uint64_t)mesh); } void transform_rotate(void *raw, vec4_t axis, float f); FN(transform_rotate) { - int64_t p; - JS_ToInt64(ctx, &p, argv[0]); + uint64_t p; + JS_ToBigUint64(ctx, &p, argv[0]); vec4_t axis; axis.x = 0.0; axis.y = 0.0; diff --git a/base/plugins/plugin_api.h b/base/plugins/plugin_api.h index 18176c54..f2024209 100644 --- a/base/plugins/plugin_api.h +++ b/base/plugins/plugin_api.h @@ -7,9 +7,9 @@ extern JSRuntime *js_runtime; extern JSContext *js_ctx; -void js_eval(const char *s); -void js_call(void *p); -void js_call_arg(void *p, int argc, void *argv); +float js_eval(const char *s); +char *js_call(void *p); +JSValue js_call_arg(void *p, int argc, void *argv); // ██████╗ ███████╗███████╗██╗███╗ ██╗███████╗███████╗ // ██╔══██╗██╔════╝██╔════╝██║████╗ ██║██╔════╝██╔════╝ @@ -31,8 +31,8 @@ void js_call_arg(void *p, int argc, void *argv); #define PTR_FN(name)\ void *name();\ FN(name) {\ - int64_t result = (int64_t)name();\ - return JS_NewInt64(ctx, result);\ + uint64_t result = (uint64_t)name();\ + return JS_NewBigUint64(ctx, result);\ } #define VOID_FN_STR(name)\ @@ -46,8 +46,8 @@ void js_call_arg(void *p, int argc, void *argv); #define VOID_FN_PTR_STR(name)\ void name(void *p, char *s);\ FN(name) {\ - int64_t p;\ - JS_ToInt64(ctx, &p, argv[0]);\ + uint64_t p;\ + JS_ToBigUint64(ctx, &p, argv[0]);\ char *s = (char *)JS_ToCString(ctx, argv[1]);\ name((void *)p, s);\ return JS_UNDEFINED;\ @@ -67,8 +67,8 @@ void js_call_arg(void *p, int argc, void *argv); #define VOID_FN_PTR_CB(name)\ void name(void *p0, void *p1);\ FN(name) {\ - int64_t p0;\ - JS_ToInt64(ctx, &p0, argv[0]);\ + uint64_t p0;\ + JS_ToBigUint64(ctx, &p0, argv[0]);\ JSValue *p1 = malloc(sizeof(JSValue));\ JSValue dup = JS_DupValue(ctx, argv[1]);\ memcpy(p1, &dup, sizeof(JSValue));\ diff --git a/base/sources/iron.h b/base/sources/iron.h index 9c2cf539..39636069 100644 --- a/base/sources/iron.h +++ b/base/sources/iron.h @@ -92,49 +92,47 @@ float js_eval(const char *js) { return d; } -JSValue js_call_result; - -JSValue *js_call_arg(void *p, int argc, JSValue *argv) { +JSValue js_call_arg(void *p, int argc, JSValue *argv) { if (js_runtime == NULL) { js_init(); } JSValue fn = *(JSValue *)p; JSValue global_obj = JS_GetGlobalObject(js_ctx); - js_call_result = JS_Call(js_ctx, fn, global_obj, argc, argv); + JSValue js_call_result = JS_Call(js_ctx, fn, global_obj, argc, argv); if (JS_IsException(js_call_result)) { js_std_dump_error(js_ctx); JS_ResetUncatchableError(js_ctx); } JS_FreeValue(js_ctx, global_obj); - return &js_call_result; + return js_call_result; } char *js_call_ptr(void *p, void *arg) { - JSValue argv[] = { JS_NewInt64(js_ctx, (int64_t)arg) }; - return (char *)JS_ToCString(js_ctx, *js_call_arg(p, 1, argv)); + JSValue argv[] = { JS_NewBigUint64(js_ctx, (uint64_t)arg) }; + return (char *)JS_ToCString(js_ctx, js_call_arg(p, 1, argv)); } char *js_call_ptr_str(void *p, void *arg0, char *arg1) { - JSValue argv[] = { JS_NewInt64(js_ctx, (int64_t)arg0), JS_NewString(js_ctx, arg1) }; - return (char *)JS_ToCString(js_ctx, *js_call_arg(p, 2, argv)); + JSValue argv[] = { JS_NewBigUint64(js_ctx, (uint64_t)arg0), JS_NewString(js_ctx, arg1) }; + return (char *)JS_ToCString(js_ctx, js_call_arg(p, 2, argv)); } void *js_pcall_str(void *p, char *arg0) { JSValue argv[] = { JS_NewString(js_ctx, arg0) }; - int64_t result; - JS_ToInt64(js_ctx, &result, *js_call_arg(p, 1, argv)); + uint64_t result; + JS_ToBigUint64(js_ctx, &result, js_call_arg(p, 1, argv)); return (void *)result; } char *js_call(void *p) { - return (char *)JS_ToCString(js_ctx, *js_call_arg(p, 0, NULL)); + return (char *)JS_ToCString(js_ctx, js_call_arg(p, 0, NULL)); } #else void js_init() {} float js_eval(const char *js) { return 0.0; } -void *js_call_arg(void *p, int argc, void *argv) { return NULL; } +void js_call_arg(void *p, int argc, void *argv) { return NULL; } char *js_call_ptr(void *p, void *arg) { return NULL; } char *js_call_ptr_str(void *p, void *arg0, char *arg1) { return NULL; } void *js_pcall_str(void *p, char *arg0) { return NULL; }