diff options
Diffstat (limited to 'src/script_sys.c')
| -rw-r--r-- | src/script_sys.c | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/src/script_sys.c b/src/script_sys.c index e9488fc..4c87327 100644 --- a/src/script_sys.c +++ b/src/script_sys.c @@ -18,32 +18,38 @@ static i32 current_mod = -1; static void restart(void) { - state = tcc_new(); - tcc_set_output_type(state, TCC_OUTPUT_MEMORY); + TCCState* new_state = tcc_new(); + tcc_set_output_type(new_state, TCC_OUTPUT_MEMORY); - tcc_add_symbol(state, "load_new_tex", load_new_tex); - tcc_add_symbol(state, "load_new_shader", load_new_shader); + tcc_add_symbol(new_state, "load_new_tex", load_new_tex); + tcc_add_symbol(new_state, "load_new_shader", load_new_shader); - tcc_add_symbol(state, "draw_text", DrawText); - tcc_add_symbol(state, "set_active_shader", set_active_shader); - tcc_add_symbol(state, "draw_texture", draw_texture); - tcc_add_symbol(state, "reset_active_shader", reset_active_shader); + tcc_add_symbol(new_state, "draw_text", DrawText); + tcc_add_symbol(new_state, "set_active_shader", set_active_shader); + tcc_add_symbol(new_state, "draw_texture", draw_texture); + tcc_add_symbol(new_state, "reset_active_shader", reset_active_shader); - tcc_add_file(state, "assets/src/main.c"); + if(tcc_add_file(new_state, "assets/src/main.c") == -1){ + TRACELOG(LOG_ERROR, "Compilation failed!\n"); + return; + } - tcc_relocate(state, TCC_RELOCATE_AUTO); + if(state != NULL) + deinit_script_sys(); + state = new_state; + + tcc_relocate(state, TCC_RELOCATE_AUTO); script_init = tcc_get_symbol(state, "init"); script_update = tcc_get_symbol(state, "update"); script_exit = tcc_get_symbol(state, "exit"); + script_init(); } void init_script_sys(void) { - restart(); - current_mod = GetFileModTime("assets/src/main.c"); - script_init(); + restart(); } void update_script(void) @@ -53,9 +59,7 @@ void update_script(void) if(new_mod != current_mod){ current_mod = new_mod; - deinit_script_sys(); restart(); - script_init(); } script_update(); } |
