diff --git a/src/corelib/input.c b/src/corelib/input.c index ab769cc..bb99222 100644 --- a/src/corelib/input.c +++ b/src/corelib/input.c @@ -189,3 +189,7 @@ int input_get_mousedown(int mousebtn) { uint32_t mask = SDL_BUTTON(mousebtn); return (SDL_GetMouseState(NULL, NULL) & mask) != 0; } + +void input_disconnect_all() { + g_key_listeners_endptr = g_key_listeners; +} diff --git a/src/corelib/input.h b/src/corelib/input.h index 3cca76d..a219ddc 100644 --- a/src/corelib/input.h +++ b/src/corelib/input.h @@ -30,6 +30,8 @@ extern void input_init(); extern void update_input(); extern void input_notify_event(SDL_Event event); +extern void input_disconnect_all(); + #ifdef __cplusplus } #endif diff --git a/src/corelib/scene.c b/src/corelib/scene.c index 61090c2..ec870f3 100644 --- a/src/corelib/scene.c +++ b/src/corelib/scene.c @@ -1,6 +1,7 @@ #include "scene.h" #include "ctype.h" +#include "input.h" #include "stdint.h" #include "stddef.h" #include "stdlib.h" @@ -200,6 +201,7 @@ int _validate_scene(FILE* file) { void load_scene(const char* filename) { FILE* file = fopen(filename, "r"); if(_validate_scene(file)) { + input_disconnect_all(); world_clear(); _parse_scene(file); fclose(file);