From 310438f15bf42eddf880457173fb40a3987ca88b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Sep 2014 00:29:47 +0200 Subject: [PATCH] Refactor away input_key_pressed_func --- frontend/frontend.c | 6 +++++- frontend/menu/menu_common.c | 3 ++- frontend/menu/menu_input_line_cb.c | 7 +++++-- input/android_input.c | 8 +++++++- input/input_common.h | 7 ++++--- retroarch.c | 3 ++- 6 files changed, 25 insertions(+), 9 deletions(-) diff --git a/frontend/frontend.c b/frontend/frontend.c index dffdd01b73..6d4480dae6 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -186,6 +186,8 @@ int main_entry_iterate_menu_preinit(signature(), args_type() args) int main_entry_iterate_menu(signature(), args_type() args) { + retro_input_t input = 0; + if (menu_iterate()) { if (driver.frontend_ctx && driver.frontend_ctx->process_events) @@ -199,7 +201,9 @@ int main_entry_iterate_menu(signature(), args_type() args) rarch_main_command(RARCH_CMD_AUDIO_START); rarch_main_set_state(RARCH_ACTION_STATE_FLUSH_INPUT); - if (input_key_pressed_func(RARCH_QUIT_KEY) || + input = input_keys_pressed_func(RARCH_QUIT_KEY, RARCH_QUIT_KEY + 1); + + if (BIND_PRESSED(input, RARCH_QUIT_KEY) || !driver.video->alive(driver.video_data)) return 1; diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 4f3e36f57b..2f52030180 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -319,7 +319,8 @@ bool menu_iterate(void) rarch_input_poll(); - retro_input_t input = input_keys_pressed_func(RARCH_FIRST_META_KEY); + retro_input_t input = input_keys_pressed_func(RARCH_FIRST_META_KEY, + RARCH_BIND_LIST_END); rarch_check_block_hotkey(BIND_PRESSED(input, RARCH_ENABLE_HOTKEY)); #ifdef HAVE_OVERLAY diff --git a/frontend/menu/menu_input_line_cb.c b/frontend/menu/menu_input_line_cb.c index fdeaa2f62c..74bd151c8f 100644 --- a/frontend/menu/menu_input_line_cb.c +++ b/frontend/menu/menu_input_line_cb.c @@ -301,7 +301,7 @@ bool menu_custom_bind_keyboard_cb(void *data, unsigned code) uint64_t menu_input(void) { unsigned i; - uint64_t input_state = 0; + uint64_t input_state = 0, input_meta = 0; static const struct retro_keybind *binds[] = { g_settings.input.binds[0] }; if (!driver.menu) @@ -327,7 +327,10 @@ uint64_t menu_input(void) #endif } } - input_state |= input_key_pressed_func(RARCH_MENU_TOGGLE) + + input_meta = input_keys_pressed_func(RARCH_MENU_TOGGLE, RARCH_MENU_TOGGLE + 1); + + input_state |= BIND_PRESSED(input_meta, RARCH_MENU_TOGGLE) ? (1ULL << RARCH_MENU_TOGGLE) : 0; input_pop_analog_dpad((struct retro_keybind*)binds[0]); diff --git a/input/android_input.c b/input/android_input.c index afcd1c231b..15f95403d5 100644 --- a/input/android_input.c +++ b/input/android_input.c @@ -516,6 +516,12 @@ static int android_input_get_id(android_input_t *android, AInputEvent *event) return id; } +static bool pause_key_pressed(void) +{ + retro_input_t input = input_keys_pressed_func(RARCH_PAUSE_TOGGLE, RARCH_PAUSE_TOGGLE+1); + return BIND_PRESSED(input, RARCH_PAUSE_TOGGLE); +} + /* Handle all events. If our activity is in pause state, * block until we're unpaused. */ @@ -525,7 +531,7 @@ static void android_input_poll(void *data) struct android_app *android_app = (struct android_app*)g_android; android_input_t *android = (android_input_t*)data; - while ((ident = ALooper_pollAll((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) + while ((ident = ALooper_pollAll((pause_key_pressed()) ? -1 : 0, NULL, NULL, NULL)) >= 0) { diff --git a/input/input_common.h b/input/input_common.h index c6d9bd7c91..b8d4f2dfdd 100644 --- a/input/input_common.h +++ b/input/input_common.h @@ -218,18 +218,19 @@ static inline bool input_key_pressed_func(int key) /* Returns a 64-bit mask of all pressed buttons, starting * from the specified key up until the last queryable key - * (RARCH_BIND_LIST_END). + * (key_end). * * TODO: In case RARCH_BIND_LIST_END starts exceeding 64, * and you need a bitmask of more than 64 entries, don't * use this function. */ -static inline retro_input_t input_keys_pressed_func(unsigned key) +static inline retro_input_t input_keys_pressed_func(unsigned key, + unsigned key_end) { retro_input_t ret = 0; - for (; key < RARCH_BIND_LIST_END; key++) + for (; key < key_end; key++) { if (input_key_pressed_func(key)) ret |= (1ULL << key); diff --git a/retroarch.c b/retroarch.c index 0bca9220d2..669d33328b 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3686,7 +3686,8 @@ void rarch_main_command(unsigned cmd) bool rarch_main_iterate(void) { unsigned i; - retro_input_t input = input_keys_pressed_func(RARCH_FIRST_META_KEY); + retro_input_t input = input_keys_pressed_func(RARCH_FIRST_META_KEY, + RARCH_BIND_LIST_END); /* SHUTDOWN on consoles should exit RetroArch completely. */ if (g_extern.system.shutdown)