aboutsummaryrefslogtreecommitdiff
path: root/src/script_sys.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/script_sys.c')
-rw-r--r--src/script_sys.c34
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();
}