Refactor some code in menu_input.c

This commit is contained in:
twinaphex 2015-05-17 22:56:41 +02:00
parent 0a49e6d62b
commit 08c85f06ff

View File

@ -367,16 +367,15 @@ static bool menu_input_custom_bind_keyboard_cb(void *data, unsigned code)
return (menu->binds.begin <= menu->binds.last);
}
int menu_input_set_keyboard_bind_mode(void *data,
static int menu_input_set_bind_mode_common(rarch_setting_t *setting,
enum menu_input_bind_mode type)
{
struct retro_keybind *keybind = NULL;
rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
menu_handle_t *menu = menu_driver_get_ptr();
menu_navigation_t *nav = menu_navigation_get_ptr();
if (!menu || !setting)
if (!setting)
return -1;
switch (type)
@ -410,10 +409,14 @@ int menu_input_set_keyboard_bind_mode(void *data,
nav->selection_ptr);
break;
}
return 0;
}
static int menu_input_set_timeout(void)
{
menu_handle_t *menu = menu_driver_get_ptr();
menu->binds.timeout_end =
rarch_get_time_usec() +
menu->binds.timeout_end = rarch_get_time_usec() +
MENU_KEYBOARD_BIND_TIMEOUT_SECONDS * 1000000;
input_keyboard_wait_keys(menu,
menu_input_custom_bind_keyboard_cb);
@ -421,49 +424,29 @@ int menu_input_set_keyboard_bind_mode(void *data,
return 0;
}
int menu_input_set_keyboard_bind_mode(void *data,
enum menu_input_bind_mode type)
{
rarch_setting_t *setting = (rarch_setting_t*)data;
if (!setting)
return -1;
if (menu_input_set_bind_mode_common(setting, type) == -1)
return -1;
return menu_input_set_timeout();
}
int menu_input_set_input_device_bind_mode(void *data,
enum menu_input_bind_mode type)
{
struct retro_keybind *keybind = NULL;
rarch_setting_t *setting = (rarch_setting_t*)data;
settings_t *settings = config_get_ptr();
menu_handle_t *menu = menu_driver_get_ptr();
menu_navigation_t *nav = menu_navigation_get_ptr();
rarch_setting_t *setting = (rarch_setting_t*)data;
if (!menu || !setting)
if (!setting)
return -1;
if (menu_input_set_bind_mode_common(setting, type) == -1)
return -1;
switch (type)
{
case MENU_INPUT_BIND_NONE:
return -1;
case MENU_INPUT_BIND_SINGLE:
keybind = (struct retro_keybind*)setting->value.keybind;
if (!keybind)
return -1;
menu->binds.begin = setting->bind_type;
menu->binds.last = setting->bind_type;
menu->binds.target = keybind;
menu->binds.user = setting->index_offset;
menu_list_push( menu->menu_list->menu_stack,
"",
"custom_bind",
MENU_SETTINGS_CUSTOM_BIND,
nav->selection_ptr);
break;
case MENU_INPUT_BIND_ALL:
menu->binds.target = &settings->input.binds
[setting->index_offset][0];
menu->binds.begin = MENU_SETTINGS_BIND_BEGIN;
menu->binds.last = MENU_SETTINGS_BIND_LAST;
menu_list_push( menu->menu_list->menu_stack,
"",
"custom_bind_all",
MENU_SETTINGS_CUSTOM_BIND,
nav->selection_ptr);
break;
}
menu_input_poll_bind_get_rested_axes(&menu->binds);
menu_input_poll_bind_state(&menu->binds);