From ce9573e4c32dd81df70eef375b2d5afa5d629dc7 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 24 Mar 2016 03:36:38 +0100 Subject: [PATCH] Create RARCH_INPUT_KEYBOARD_CTL_LINE_FREE --- input/input_keyboard.c | 11 +++++++---- input/input_keyboard.h | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/input/input_keyboard.c b/input/input_keyboard.c index a1e27e16c0..9763b7225c 100644 --- a/input/input_keyboard.c +++ b/input/input_keyboard.c @@ -188,8 +188,7 @@ const char **input_keyboard_line_get_buffer( const char **input_keyboard_start_line(void *userdata, input_keyboard_line_complete_t cb) { - if (g_keyboard_line) - input_keyboard_line_free(g_keyboard_line); + input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, NULL); g_keyboard_line = input_keyboard_line_new(userdata, cb); @@ -249,8 +248,7 @@ void input_keyboard_event(bool down, unsigned code, } /* Line is complete, can free it now. */ - input_keyboard_line_free(g_keyboard_line); - g_keyboard_line = NULL; + input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, NULL); /* Unblock all hotkeys. */ input_driver_keyboard_mapping_set_block(false); @@ -271,6 +269,11 @@ bool input_keyboard_ctl(enum rarch_input_keyboard_ctl_state state, void *data) switch (state) { + case RARCH_INPUT_KEYBOARD_CTL_LINE_FREE: + if (g_keyboard_line) + input_keyboard_line_free(g_keyboard_line); + g_keyboard_line = NULL; + break; case RARCH_INPUT_KEYBOARD_CTL_START_WAIT_KEYS: { input_keyboard_ctx_wait_t *keys = (input_keyboard_ctx_wait_t*)data; diff --git a/input/input_keyboard.h b/input/input_keyboard.h index e385a0ced6..b2f6268313 100644 --- a/input/input_keyboard.h +++ b/input/input_keyboard.h @@ -35,6 +35,8 @@ enum rarch_input_keyboard_ctl_state RARCH_INPUT_KEYBOARD_CTL_UNSET_LINEFEED_ENABLED, RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED, + RARCH_INPUT_KEYBOARD_CTL_LINE_FREE, + /* * Waits for keys to be pressed (used for binding * keys in the menu).