summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2023-08-14 09:44:23 +0000
committer0scar <qgt268@alumni.ku.dk>2023-08-14 10:13:07 +0000
commitb1d81e1b1fd59519119dc3e77333d51b0d5b2458 (patch)
tree0de1d98deb4e3d200811159c60f6823762b44f14 /include
parentb88e3cb9e61aaa151d2072879e3382cb3af3485e (diff)
Add memory freeing to input contexts
Diffstat (limited to 'include')
-rw-r--r--include/engine/input.h19
1 files changed, 10 insertions, 9 deletions
diff --git a/include/engine/input.h b/include/engine/input.h
index 918312e..12b1bba 100644
--- a/include/engine/input.h
+++ b/include/engine/input.h
@@ -19,15 +19,15 @@ typedef union action_t {
struct {
InputType type;
input_callback_t* callback;
- const char* callback_str;
+ char* callback_str;
} action;
struct {
InputType type;
input_callback_t* activate;
input_callback_t* deactivate;
- const char* activate_str;
- const char* deactivate_str;
+ char* activate_str;
+ char* deactivate_str;
} state;
} action_t;
@@ -47,6 +47,7 @@ typedef struct i_ctx {
isize len;
} i_ctx;
+void i_ctx_t_free(i_ctx* c);
void i_flush_bindings(usize numcalls, void* state_mem, input_callback_t* c[]);
action_t i_get_action(const i_ctx *restrict ctx, u32 time, scancode_t scancode);
@@ -55,7 +56,7 @@ action_t i_get_action(const i_ctx *restrict ctx, u32 time, scancode_t scancode);
.action = (action_t){.action = {\
.type = InputType_action,\
.callback = (input_callback_t*)&f_action,\
- .callback_str = #f_action,\
+ .callback_str = strdup( #f_action ),\
}},\
.scancode = key,\
.scancode_alt = altkey,\
@@ -68,8 +69,8 @@ action_t i_get_action(const i_ctx *restrict ctx, u32 time, scancode_t scancode);
.type = InputType_state,\
.activate = (input_callback_t*)&f_activate,\
.deactivate = (input_callback_t*)&f_deactivate,\
- .activate_str = #f_activate,\
- .deactivate_str = #f_deactivate,\
+ .activate_str = strdup( #f_activate ),\
+ .deactivate_str = strdup( #f_deactivate ),\
}},\
.scancode = key,\
.scancode_alt = altkey,\
@@ -82,7 +83,7 @@ action_t i_get_action(const i_ctx *restrict ctx, u32 time, scancode_t scancode);
.action = (action_t){.action = {\
.type = InputType_action,\
.callback = NULL,\
- .callback_str = action_str,\
+ .callback_str = strdup( action_str ),\
}},\
.scancode = key,\
.scancode_alt = altkey,\
@@ -95,8 +96,8 @@ action_t i_get_action(const i_ctx *restrict ctx, u32 time, scancode_t scancode);
.type = InputType_state,\
.activate = NULL,\
.deactivate = NULL,\
- .activate_str = _activate_str,\
- .deactivate_str = _deactivate_str,\
+ .activate_str = strdup( _activate_str ),\
+ .deactivate_str = strdup( _deactivate_str ),\
}},\
.scancode = key,\
.scancode_alt = altkey,\