fix gc bug
This commit is contained in:
@@ -84,9 +84,11 @@ static void render_frame(plm_t *mpeg, plm_frame_t *frame, void *d) {
|
||||
JS_ROOT(surfData, JS_NewObject(ds->js));
|
||||
JS_SetPropertyStr(ds->js, surfData.val, "width", JS_NewInt32(ds->js, frame->width));
|
||||
JS_SetPropertyStr(ds->js, surfData.val, "height", JS_NewInt32(ds->js, frame->height));
|
||||
JS_SetPropertyStr(ds->js, surfData.val, "format", JS_NewString(ds->js, "rgba32"));
|
||||
JSValue tmp = JS_NewString(ds->js, "rgba32");
|
||||
JS_SetPropertyStr(ds->js, surfData.val, "format", tmp);
|
||||
JS_SetPropertyStr(ds->js, surfData.val, "pitch", JS_NewInt32(ds->js, frame->width*4));
|
||||
JS_SetPropertyStr(ds->js, surfData.val, "pixels", js_new_blob_stoned_copy(ds->js, rgb, frame->height*frame->width*4));
|
||||
tmp = js_new_blob_stoned_copy(ds->js, rgb, frame->height*frame->width*4);
|
||||
JS_SetPropertyStr(ds->js, surfData.val, "pixels", tmp);
|
||||
|
||||
JSValue s[1];
|
||||
s[0] = surfData.val;
|
||||
|
||||
49
geometry.c
49
geometry.c
@@ -280,13 +280,17 @@ JSValue quads_to_mesh(JSContext *js, text_vert *buffer)
|
||||
|
||||
JS_FRAME(js);
|
||||
JS_ROOT(ret, JS_NewObject(js));
|
||||
JS_SetPropertyStr(js, ret.val, "xy", js_new_blob_stoned_copy(js, xy_data, xy_size));
|
||||
JSValue tmp = js_new_blob_stoned_copy(js, xy_data, xy_size);
|
||||
JS_SetPropertyStr(js, ret.val, "xy", tmp);
|
||||
JS_SetPropertyStr(js, ret.val, "xy_stride", JS_NewInt32(js, 2 * sizeof(float)));
|
||||
JS_SetPropertyStr(js, ret.val, "uv", js_new_blob_stoned_copy(js, uv_data, uv_size));
|
||||
tmp = js_new_blob_stoned_copy(js, uv_data, uv_size);
|
||||
JS_SetPropertyStr(js, ret.val, "uv", tmp);
|
||||
JS_SetPropertyStr(js, ret.val, "uv_stride", JS_NewInt32(js, 2 * sizeof(float)));
|
||||
JS_SetPropertyStr(js, ret.val, "color", js_new_blob_stoned_copy(js, color_data, color_size));
|
||||
tmp = js_new_blob_stoned_copy(js, color_data, color_size);
|
||||
JS_SetPropertyStr(js, ret.val, "color", tmp);
|
||||
JS_SetPropertyStr(js, ret.val, "color_stride", JS_NewInt32(js, sizeof(SDL_FColor)));
|
||||
JS_SetPropertyStr(js, ret.val, "indices", js_new_blob_stoned_copy(js, indices, sizeof(uint16_t)*count));
|
||||
tmp = js_new_blob_stoned_copy(js, indices, sizeof(uint16_t)*count);
|
||||
JS_SetPropertyStr(js, ret.val, "indices", tmp);
|
||||
JS_SetPropertyStr(js, ret.val, "num_vertices", JS_NewInt32(js, verts));
|
||||
JS_SetPropertyStr(js, ret.val, "num_indices", JS_NewInt32(js, count));
|
||||
JS_SetPropertyStr(js, ret.val, "size_indices", JS_NewInt32(js, 2)); // uint16_t size
|
||||
@@ -711,18 +715,22 @@ JSC_CCALL(geometry_tilemap_to_data,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Create result object with blob data
|
||||
JS_FRAME(js);
|
||||
JS_ROOT(result, JS_NewObject(js));
|
||||
JS_SetPropertyStr(js, result.val, "xy", js_new_blob_stoned_copy(js, xy_data, vertex_count * 2 * sizeof(float)));
|
||||
JSValue tmp = js_new_blob_stoned_copy(js, xy_data, vertex_count * 2 * sizeof(float));
|
||||
JS_SetPropertyStr(js, result.val, "xy", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "xy_stride", JS_NewInt32(js, 2 * sizeof(float)));
|
||||
JS_SetPropertyStr(js, result.val, "uv", js_new_blob_stoned_copy(js, uv_data, vertex_count * 2 * sizeof(float)));
|
||||
tmp = js_new_blob_stoned_copy(js, uv_data, vertex_count * 2 * sizeof(float));
|
||||
JS_SetPropertyStr(js, result.val, "uv", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "uv_stride", JS_NewInt32(js, 2 * sizeof(float)));
|
||||
JS_SetPropertyStr(js, result.val, "color", js_new_blob_stoned_copy(js, color_data, vertex_count * sizeof(SDL_FColor)));
|
||||
tmp = js_new_blob_stoned_copy(js, color_data, vertex_count * sizeof(SDL_FColor));
|
||||
JS_SetPropertyStr(js, result.val, "color", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "color_stride", JS_NewInt32(js, sizeof(SDL_FColor)));
|
||||
JS_SetPropertyStr(js, result.val, "indices", js_new_blob_stoned_copy(js, index_data, index_count * sizeof(uint16_t)));
|
||||
tmp = js_new_blob_stoned_copy(js, index_data, index_count * sizeof(uint16_t));
|
||||
JS_SetPropertyStr(js, result.val, "indices", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "num_vertices", JS_NewInt32(js, vertex_count));
|
||||
JS_SetPropertyStr(js, result.val, "num_indices", JS_NewInt32(js, index_count));
|
||||
JS_SetPropertyStr(js, result.val, "size_indices", JS_NewInt32(js, 2)); // using uint16_t
|
||||
@@ -923,17 +931,21 @@ JSC_CCALL(geometry_sprites_to_data,
|
||||
|
||||
vertex_idx += 4;
|
||||
}
|
||||
|
||||
|
||||
// Create result object with blob data
|
||||
JS_FRAME(js);
|
||||
JS_ROOT(result, JS_NewObject(js));
|
||||
JS_SetPropertyStr(js, result.val, "xy", js_new_blob_stoned_copy(js, xy_data, vertex_count * 2 * sizeof(float)));
|
||||
JSValue tmp = js_new_blob_stoned_copy(js, xy_data, vertex_count * 2 * sizeof(float));
|
||||
JS_SetPropertyStr(js, result.val, "xy", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "xy_stride", JS_NewInt32(js, 2 * sizeof(float)));
|
||||
JS_SetPropertyStr(js, result.val, "uv", js_new_blob_stoned_copy(js, uv_data, vertex_count * 2 * sizeof(float)));
|
||||
tmp = js_new_blob_stoned_copy(js, uv_data, vertex_count * 2 * sizeof(float));
|
||||
JS_SetPropertyStr(js, result.val, "uv", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "uv_stride", JS_NewInt32(js, 2 * sizeof(float)));
|
||||
JS_SetPropertyStr(js, result.val, "color", js_new_blob_stoned_copy(js, color_data, vertex_count * sizeof(SDL_FColor)));
|
||||
tmp = js_new_blob_stoned_copy(js, color_data, vertex_count * sizeof(SDL_FColor));
|
||||
JS_SetPropertyStr(js, result.val, "color", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "color_stride", JS_NewInt32(js, sizeof(SDL_FColor)));
|
||||
JS_SetPropertyStr(js, result.val, "indices", js_new_blob_stoned_copy(js, index_data, index_count * sizeof(uint16_t)));
|
||||
tmp = js_new_blob_stoned_copy(js, index_data, index_count * sizeof(uint16_t));
|
||||
JS_SetPropertyStr(js, result.val, "indices", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "num_vertices", JS_NewInt32(js, vertex_count));
|
||||
JS_SetPropertyStr(js, result.val, "num_indices", JS_NewInt32(js, index_count));
|
||||
JS_SetPropertyStr(js, result.val, "size_indices", JS_NewInt32(js, 2)); // using uint16_t
|
||||
@@ -1104,11 +1116,14 @@ JSC_CCALL(geometry_make_rect_quad,
|
||||
// Create result object
|
||||
JS_FRAME(js);
|
||||
JS_ROOT(result, JS_NewObject(js));
|
||||
JS_SetPropertyStr(js, result.val, "xy", js_new_blob_stoned_copy(js, xy_data, vertex_count * 2 * sizeof(float)));
|
||||
JSValue tmp = js_new_blob_stoned_copy(js, xy_data, vertex_count * 2 * sizeof(float));
|
||||
JS_SetPropertyStr(js, result.val, "xy", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "xy_stride", JS_NewInt32(js, 2 * sizeof(float)));
|
||||
JS_SetPropertyStr(js, result.val, "uv", js_new_blob_stoned_copy(js, uv_data, vertex_count * 2 * sizeof(float)));
|
||||
tmp = js_new_blob_stoned_copy(js, uv_data, vertex_count * 2 * sizeof(float));
|
||||
JS_SetPropertyStr(js, result.val, "uv", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "uv_stride", JS_NewInt32(js, 2 * sizeof(float)));
|
||||
JS_SetPropertyStr(js, result.val, "color", js_new_blob_stoned_copy(js, color_data, vertex_count * sizeof(SDL_FColor)));
|
||||
tmp = js_new_blob_stoned_copy(js, color_data, vertex_count * sizeof(SDL_FColor));
|
||||
JS_SetPropertyStr(js, result.val, "color", tmp);
|
||||
JS_SetPropertyStr(js, result.val, "color_stride", JS_NewInt32(js, sizeof(SDL_FColor)));
|
||||
JS_SetPropertyStr(js, result.val, "num_vertices", JS_NewInt32(js, vertex_count));
|
||||
JS_RestoreFrame(_js_ctx, _js_gc_frame, _js_local_frame);
|
||||
|
||||
9
staef.c
9
staef.c
@@ -858,13 +858,16 @@ CELL_USE_INIT(
|
||||
JS_ROOT(mod, JS_NewObject(js));
|
||||
|
||||
// Create font constructor (legacy)
|
||||
JS_SetPropertyStr(js, mod.val, "font", JS_NewCFunction2(js, js_font_constructor, "font", 2, JS_CFUNC_generic, 0));
|
||||
JSValue fn = JS_NewCFunction2(js, js_font_constructor, "font", 2, JS_CFUNC_generic, 0);
|
||||
JS_SetPropertyStr(js, mod.val, "font", fn);
|
||||
|
||||
// Create SDF font constructor: sdf_font(data, em_px, range_px, padding_px, sharpness)
|
||||
JS_SetPropertyStr(js, mod.val, "sdf_font", JS_NewCFunction2(js, js_sdf_font_constructor, "sdf_font", 5, JS_CFUNC_generic, 0));
|
||||
fn = JS_NewCFunction2(js, js_sdf_font_constructor, "sdf_font", 5, JS_CFUNC_generic, 0);
|
||||
JS_SetPropertyStr(js, mod.val, "sdf_font", fn);
|
||||
|
||||
// Create MSDF font constructor: msdf_font(data, em_px, range_px, padding_px, sharpness)
|
||||
JS_SetPropertyStr(js, mod.val, "msdf_font", JS_NewCFunction2(js, js_msdf_font_constructor, "msdf_font", 5, JS_CFUNC_generic, 0));
|
||||
fn = JS_NewCFunction2(js, js_msdf_font_constructor, "msdf_font", 5, JS_CFUNC_generic, 0);
|
||||
JS_SetPropertyStr(js, mod.val, "msdf_font", fn);
|
||||
|
||||
JS_RETURN(mod.val);
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user