From ca1066d60ec37a01d069e91c12602bd00bf233ef Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 5 Sep 2014 05:57:27 +0200 Subject: [PATCH] Refactor CLEAR_INPUT --- frontend/frontend.c | 8 +++----- general.h | 2 ++ retroarch.c | 6 ++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index 88029715cf..d9c1b18035 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -82,7 +82,8 @@ static int main_entry_iterate_clear_input(args_type() args) /* Restore libretro keyboard callback. */ g_extern.system.key_event = key_event; - g_extern.lifecycle_state &= ~(1ULL << MODE_CLEAR_INPUT); + + rarch_main_set_state(RARCH_ACTION_STATE_FLUSH_INPUT_FINISHED); } return 0; @@ -173,11 +174,8 @@ static int main_entry_iterate_menu(args_type() args) driver_set_nonblock_state(driver.nonblock_state); rarch_main_command(RARCH_CMD_AUDIO_START); + rarch_main_set_state(RARCH_ACTION_STATE_FLUSH_INPUT); - g_extern.lifecycle_state |= (1ULL << MODE_CLEAR_INPUT); - - /* If QUIT state came from command interface, we'll only see it - * once due to MODE_CLEAR_INPUT. */ if (input_key_pressed_func(RARCH_QUIT_KEY) || !driver.video->alive(driver.video_data)) return 1; diff --git a/general.h b/general.h index 3f5b57ab08..a804b7476a 100644 --- a/general.h +++ b/general.h @@ -144,6 +144,8 @@ enum action_state RARCH_ACTION_STATE_MENU_RUNNING, RARCH_ACTION_STATE_MENU_RUNNING_FINISHED, RARCH_ACTION_STATE_EXITSPAWN, + RARCH_ACTION_STATE_FLUSH_INPUT, + RARCH_ACTION_STATE_FLUSH_INPUT_FINISHED, RARCH_ACTION_STATE_QUIT, }; diff --git a/retroarch.c b/retroarch.c index 7ff93f0ccc..56a54c8f63 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3336,6 +3336,12 @@ void rarch_main_set_state(unsigned cmd) rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); rarch_main_set_state(RARCH_ACTION_STATE_RUNNING_FINISHED); break; + case RARCH_ACTION_STATE_FLUSH_INPUT: + g_extern.lifecycle_state |= (1ULL << MODE_CLEAR_INPUT); + break; + case RARCH_ACTION_STATE_FLUSH_INPUT_FINISHED: + g_extern.lifecycle_state &= ~(1ULL << MODE_CLEAR_INPUT); + break; case RARCH_ACTION_STATE_NONE: default: break;