diff options
| author | Uneven Prankster <unevenprankster@protonmail.com> | 2023-07-25 10:37:22 -0300 |
|---|---|---|
| committer | Uneven Prankster <unevenprankster@protonmail.com> | 2023-07-25 10:37:22 -0300 |
| commit | 776d0e8262e8206819f5475d08ff10caa855cca5 (patch) | |
| tree | d85863302cd67091fe06bbde7e20170395b5c2d2 /src/script_sys.c | |
| parent | aedf1cb71ae46136e4299c9b71caa2a145268f3a (diff) | |
Compilation is now protected!
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(); } |
