fix syntax
This commit is contained in:
46
events.c
46
events.c
@@ -150,8 +150,9 @@ static const char *mouse_button_to_string(Uint8 button) {
|
||||
|
||||
// Convert SDL_Event to JS object
|
||||
static JSValue event_to_js(JSContext *js, SDL_Event *event) {
|
||||
JSValue obj = JS_NewObject(js);
|
||||
|
||||
JS_FRAME(js);
|
||||
JS_LOCAL(obj, JS_NewObject(js));
|
||||
|
||||
JS_SetPropertyStr(js, obj, "type", JS_NewString(js, event_type_to_string(event->type)));
|
||||
JS_SetPropertyStr(js, obj, "timestamp", JS_NewInt64(js, event->common.timestamp));
|
||||
|
||||
@@ -322,8 +323,10 @@ static JSValue event_to_js(JSContext *js, SDL_Event *event) {
|
||||
JS_SetPropertyStr(js, obj, "sensor", JS_NewInt32(js, event->gsensor.sensor));
|
||||
{
|
||||
JSValue data = JS_NewArray(js);
|
||||
JSLocalRef data__lr = {.ptr = &data};
|
||||
JS_PushLocalRef(_js_ctx, &data__lr);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
JS_SetPropertyUint32(js, data, i, JS_NewFloat64(js, event->gsensor.data[i]));
|
||||
JS_SetPropertyNumber(js, data, i, JS_NewFloat64(js, event->gsensor.data[i]));
|
||||
}
|
||||
JS_SetPropertyStr(js, obj, "data", data);
|
||||
}
|
||||
@@ -375,8 +378,10 @@ static JSValue event_to_js(JSContext *js, SDL_Event *event) {
|
||||
JS_SetPropertyStr(js, obj, "which", JS_NewUint32(js, event->sensor.which));
|
||||
{
|
||||
JSValue data = JS_NewArray(js);
|
||||
JSLocalRef data__lr = {.ptr = &data};
|
||||
JS_PushLocalRef(_js_ctx, &data__lr);
|
||||
for (int i = 0; i < 6; i++) {
|
||||
JS_SetPropertyUint32(js, data, i, JS_NewFloat64(js, event->sensor.data[i]));
|
||||
JS_SetPropertyNumber(js, data, i, JS_NewFloat64(js, event->sensor.data[i]));
|
||||
}
|
||||
JS_SetPropertyStr(js, obj, "data", data);
|
||||
}
|
||||
@@ -438,8 +443,8 @@ static JSValue event_to_js(JSContext *js, SDL_Event *event) {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return obj;
|
||||
|
||||
JS_RETURN(obj);
|
||||
}
|
||||
|
||||
// SDL_PumpEvents()
|
||||
@@ -480,22 +485,24 @@ JSC_CCALL(events_wait,
|
||||
JSC_CCALL(events_peep,
|
||||
int count = 10;
|
||||
if (argc > 0) JS_ToInt32(js, &count, argv[0]);
|
||||
|
||||
|
||||
SDL_Event *events = malloc(count * sizeof(SDL_Event));
|
||||
if (!events) return JS_ThrowOutOfMemory(js);
|
||||
|
||||
|
||||
int num = SDL_PeepEvents(events, count, SDL_PEEKEVENT, SDL_EVENT_FIRST, SDL_EVENT_LAST);
|
||||
if (num < 0) {
|
||||
free(events);
|
||||
return JS_NewArray(js);
|
||||
}
|
||||
|
||||
JSValue arr = JS_NewArray(js);
|
||||
|
||||
JS_FRAME(js);
|
||||
JS_LOCAL(arr, JS_NewArray(js));
|
||||
for (int i = 0; i < num; i++) {
|
||||
JS_SetPropertyUint32(js, arr, i, event_to_js(js, &events[i]));
|
||||
JS_SetPropertyNumber(js, arr, i, event_to_js(js, &events[i]));
|
||||
}
|
||||
free(events);
|
||||
return arr;
|
||||
JS_RestoreFrame(_js_ctx, _js_gc_frame, _js_local_frame);
|
||||
ret = arr;
|
||||
)
|
||||
|
||||
// SDL_HasEvent(type) -> bool
|
||||
@@ -524,13 +531,15 @@ JSC_CCALL(events_flush_range,
|
||||
|
||||
// Get all pending events as array
|
||||
JSC_CCALL(events_get_all,
|
||||
JSValue arr = JS_NewArray(js);
|
||||
JS_FRAME(js);
|
||||
JS_LOCAL(arr, JS_NewArray(js));
|
||||
SDL_Event event;
|
||||
int i = 0;
|
||||
while (SDL_PollEvent(&event)) {
|
||||
JS_SetPropertyUint32(js, arr, i++, event_to_js(js, &event));
|
||||
JS_SetPropertyNumber(js, arr, i++, event_to_js(js, &event));
|
||||
}
|
||||
return arr;
|
||||
JS_RestoreFrame(_js_ctx, _js_gc_frame, _js_local_frame);
|
||||
ret = arr;
|
||||
)
|
||||
|
||||
static const JSCFunctionListEntry js_events_funcs[] = {
|
||||
@@ -544,4 +553,9 @@ static const JSCFunctionListEntry js_events_funcs[] = {
|
||||
MIST_FUNC_DEF(events, get_all, 0),
|
||||
};
|
||||
|
||||
CELL_USE_FUNCS(js_events_funcs)
|
||||
CELL_USE_INIT(
|
||||
JS_FRAME(js);
|
||||
JS_LOCAL(mod, JS_NewObject(js));
|
||||
JS_SetPropertyFunctionList(js, mod, js_events_funcs, countof(js_events_funcs));
|
||||
JS_RETURN(mod);
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user