mirror of
https://github.com/libretro/RetroArch.git
synced 2024-10-07 14:23:29 +00:00
Create input_driver_get_uint
This commit is contained in:
parent
1223309052
commit
2906bec7a8
@ -1300,7 +1300,7 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
|
||||
SETTING_UINT("input_bind_timeout", &settings->uints.input_bind_timeout, true, input_bind_timeout, false);
|
||||
SETTING_UINT("input_turbo_period", &settings->uints.input_turbo_period, true, turbo_period, false);
|
||||
SETTING_UINT("input_duty_cycle", &settings->uints.input_turbo_duty_cycle, true, turbo_duty_cycle, false);
|
||||
SETTING_UINT("input_max_users", &settings->uints.input_max_users, true, input_max_users, false);
|
||||
SETTING_UINT("input_max_users", input_driver_get_uint(INPUT_ACTION_MAX_USERS), true, input_max_users, false);
|
||||
SETTING_UINT("input_menu_toggle_gamepad_combo", &settings->uints.input_menu_toggle_gamepad_combo, true, menu_toggle_gamepad_combo, false);
|
||||
SETTING_UINT("audio_latency", &settings->uints.audio_latency, false, 0 /* TODO */, false);
|
||||
SETTING_UINT("audio_block_frames", &settings->uints.audio_block_frames, true, 0, false);
|
||||
|
@ -255,8 +255,6 @@ typedef struct settings
|
||||
unsigned audio_latency;
|
||||
unsigned input_remap_ids[MAX_USERS][RARCH_BIND_LIST_END];
|
||||
|
||||
unsigned input_max_users;
|
||||
|
||||
/* Set by autoconfiguration in joypad_autoconfig_dir.
|
||||
* Does not override main binds. */
|
||||
unsigned input_libretro_device[MAX_USERS];
|
||||
|
19
dynamic.c
19
dynamic.c
@ -1190,17 +1190,22 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
}
|
||||
|
||||
RARCH_LOG("Environ SET_INPUT_DESCRIPTORS:\n");
|
||||
for (p = 0; p < settings->uints.input_max_users; p++)
|
||||
|
||||
{
|
||||
for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND; retro_id++)
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
|
||||
for (p = 0; p < max_users; p++)
|
||||
{
|
||||
const char *description = system->input_desc_btn[p][retro_id];
|
||||
for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND; retro_id++)
|
||||
{
|
||||
const char *description = system->input_desc_btn[p][retro_id];
|
||||
|
||||
if (!description)
|
||||
continue;
|
||||
if (!description)
|
||||
continue;
|
||||
|
||||
RARCH_LOG("\tRetroPad, User %u, Button \"%s\" => \"%s\"\n",
|
||||
p + 1, libretro_btn_desc[retro_id], description);
|
||||
RARCH_LOG("\tRetroPad, User %u, Button \"%s\" => \"%s\"\n",
|
||||
p + 1, libretro_btn_desc[retro_id], description);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -124,6 +124,7 @@ static bool input_driver_nonblock_state = false;
|
||||
static bool input_driver_flushing_input = false;
|
||||
static bool input_driver_data_own = false;
|
||||
static float input_driver_axis_threshold = 0.0f;
|
||||
static unsigned input_driver_max_users = 0;
|
||||
|
||||
/**
|
||||
* input_driver_find_handle:
|
||||
@ -271,7 +272,7 @@ void input_poll(void)
|
||||
{
|
||||
size_t i;
|
||||
settings_t *settings = config_get_ptr();
|
||||
unsigned max_users = settings->uints.input_max_users;
|
||||
unsigned max_users = input_driver_max_users;
|
||||
|
||||
current_input->poll(current_input_data);
|
||||
|
||||
@ -478,7 +479,7 @@ void state_tracker_update_input(uint16_t *input1, uint16_t *input2)
|
||||
unsigned i;
|
||||
const struct retro_keybind *binds[MAX_USERS];
|
||||
settings_t *settings = config_get_ptr();
|
||||
unsigned max_users = settings->uints.input_max_users;
|
||||
unsigned max_users = input_driver_max_users;
|
||||
|
||||
for (i = 0; i < max_users; i++)
|
||||
{
|
||||
@ -679,7 +680,7 @@ uint64_t input_menu_keys_pressed(
|
||||
settings_t *settings = (settings_t*)data;
|
||||
const struct retro_keybind *binds_norm = NULL;
|
||||
const struct retro_keybind *binds_auto = NULL;
|
||||
unsigned max_users = settings->uints.input_max_users;
|
||||
unsigned max_users = input_driver_max_users;
|
||||
|
||||
if (settings->bools.menu_unified_controls && !menu_input_dialog_get_display_kb())
|
||||
return input_keys_pressed(settings, old_input, last_input,
|
||||
@ -1209,7 +1210,7 @@ void input_driver_deinit_remote(void)
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
input_remote_free(input_driver_remote,
|
||||
settings->uints.input_max_users);
|
||||
input_driver_max_users);
|
||||
}
|
||||
input_driver_remote = NULL;
|
||||
#endif
|
||||
@ -1225,7 +1226,7 @@ bool input_driver_init_remote(void)
|
||||
|
||||
input_driver_remote = input_remote_new(
|
||||
settings->uints.network_remote_base_port,
|
||||
settings->uints.input_max_users);
|
||||
input_driver_max_users);
|
||||
|
||||
if (input_driver_remote)
|
||||
return true;
|
||||
@ -1258,6 +1259,20 @@ float *input_driver_get_float(enum input_action action)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
unsigned *input_driver_get_uint(enum input_action action)
|
||||
{
|
||||
switch (action)
|
||||
{
|
||||
case INPUT_ACTION_MAX_USERS:
|
||||
return &input_driver_max_users;
|
||||
default:
|
||||
case INPUT_ACTION_NONE:
|
||||
break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool input_driver_ungrab_mouse(void)
|
||||
{
|
||||
if (!current_input || !current_input->grab_mouse)
|
||||
|
@ -51,7 +51,8 @@ enum input_toggle_type
|
||||
enum input_action
|
||||
{
|
||||
INPUT_ACTION_NONE = 0,
|
||||
INPUT_ACTION_AXIS_THRESHOLD
|
||||
INPUT_ACTION_AXIS_THRESHOLD,
|
||||
INPUT_ACTION_MAX_USERS
|
||||
};
|
||||
|
||||
struct retro_keybind
|
||||
@ -344,6 +345,8 @@ bool input_driver_ungrab_mouse(void);
|
||||
|
||||
float *input_driver_get_float(enum input_action action);
|
||||
|
||||
unsigned *input_driver_get_uint(enum input_action action);
|
||||
|
||||
bool input_driver_is_data_ptr_same(void *data);
|
||||
|
||||
extern input_driver_t input_android;
|
||||
|
@ -105,6 +105,7 @@ bool input_remapping_save_file(const char *path)
|
||||
char buf[PATH_MAX_LENGTH];
|
||||
char remap_file[PATH_MAX_LENGTH];
|
||||
config_file_t *conf = NULL;
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
buf[0] = remap_file[0] = '\0';
|
||||
@ -123,7 +124,7 @@ bool input_remapping_save_file(const char *path)
|
||||
return false;
|
||||
}
|
||||
|
||||
for (i = 0; i < settings->uints.input_max_users; i++)
|
||||
for (i = 0; i < max_users; i++)
|
||||
{
|
||||
char buf[64];
|
||||
char key_ident[RARCH_FIRST_CUSTOM_BIND + 4][128] = {{0}};
|
||||
|
@ -3211,12 +3211,12 @@ static int menu_displaylist_parse_options_remappings(
|
||||
unsigned p, retro_id;
|
||||
rarch_system_info_t *system = NULL;
|
||||
menu_handle_t *menu = NULL;
|
||||
settings_t *settings = config_get_ptr();
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
|
||||
if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu))
|
||||
return -1;
|
||||
|
||||
for (p = 0; p < settings->uints.input_max_users; p++)
|
||||
for (p = 0; p < max_users; p++)
|
||||
{
|
||||
char key_type[PATH_MAX_LENGTH];
|
||||
char key_analog[PATH_MAX_LENGTH];
|
||||
@ -3255,7 +3255,7 @@ static int menu_displaylist_parse_options_remappings(
|
||||
|
||||
if (system)
|
||||
{
|
||||
for (p = 0; p < settings->uints.input_max_users; p++)
|
||||
for (p = 0; p < max_users; p++)
|
||||
{
|
||||
for (retro_id = 0; retro_id < RARCH_FIRST_CUSTOM_BIND + 4; retro_id++)
|
||||
{
|
||||
@ -4925,12 +4925,15 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
||||
PARSE_ONLY_UINT, false) != -1)
|
||||
count++;
|
||||
|
||||
for(user = 0; user < settings->uints.input_max_users; user++)
|
||||
{
|
||||
if (menu_displaylist_parse_settings_enum(menu, info,
|
||||
(enum msg_hash_enums)(MENU_ENUM_LABEL_NETWORK_REMOTE_USER_1_ENABLE + user),
|
||||
PARSE_ONLY_BOOL, false) != -1)
|
||||
count++;
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
for(user = 0; user < max_users; user++)
|
||||
{
|
||||
if (menu_displaylist_parse_settings_enum(menu, info,
|
||||
(enum msg_hash_enums)(MENU_ENUM_LABEL_NETWORK_REMOTE_USER_1_ENABLE + user),
|
||||
PARSE_ONLY_BOOL, false) != -1)
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
if (menu_displaylist_parse_settings_enum(menu, info,
|
||||
@ -5381,7 +5384,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, void *data)
|
||||
|
||||
{
|
||||
unsigned user;
|
||||
for (user = 0; user < settings->uints.input_max_users; user++)
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
for (user = 0; user < max_users; user++)
|
||||
{
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
(enum msg_hash_enums)(MENU_ENUM_LABEL_INPUT_USER_1_BINDS + user),
|
||||
|
@ -1246,6 +1246,7 @@ static int setting_action_left_bind_device(void *data, bool wraparound)
|
||||
{
|
||||
unsigned index_offset;
|
||||
unsigned *p = NULL;
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
rarch_setting_t *setting = (rarch_setting_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
@ -1256,8 +1257,8 @@ static int setting_action_left_bind_device(void *data, bool wraparound)
|
||||
|
||||
p = &settings->uints.input_joypad_map[index_offset];
|
||||
|
||||
if ((*p) >= settings->uints.input_max_users)
|
||||
*p = settings->uints.input_max_users - 1;
|
||||
if ((*p) >= max_users)
|
||||
*p = max_users - 1;
|
||||
else if ((*p) > 0)
|
||||
(*p)--;
|
||||
|
||||
@ -1268,6 +1269,7 @@ static int setting_action_right_bind_device(void *data, bool wraparound)
|
||||
{
|
||||
unsigned index_offset;
|
||||
unsigned *p = NULL;
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
rarch_setting_t *setting = (rarch_setting_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
@ -1278,7 +1280,7 @@ static int setting_action_right_bind_device(void *data, bool wraparound)
|
||||
|
||||
p = &settings->uints.input_joypad_map[index_offset];
|
||||
|
||||
if (*p < settings->uints.input_max_users)
|
||||
if (*p < max_users)
|
||||
(*p)++;
|
||||
|
||||
return 0;
|
||||
@ -1405,6 +1407,7 @@ static void get_string_representation_bind_device(void * data, char *s,
|
||||
size_t len)
|
||||
{
|
||||
unsigned index_offset, map = 0;
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
rarch_setting_t *setting = (rarch_setting_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
@ -1414,7 +1417,7 @@ static void get_string_representation_bind_device(void * data, char *s,
|
||||
index_offset = setting->index_offset;
|
||||
map = settings->uints.input_joypad_map[index_offset];
|
||||
|
||||
if (map < settings->uints.input_max_users)
|
||||
if (map < max_users)
|
||||
{
|
||||
const char *device_name = input_config_get_device_name(map);
|
||||
|
||||
@ -4037,7 +4040,7 @@ static bool setting_append_list(
|
||||
|
||||
CONFIG_UINT(
|
||||
list, list_info,
|
||||
&settings->uints.input_max_users,
|
||||
input_driver_get_uint(INPUT_ACTION_MAX_USERS),
|
||||
MENU_ENUM_LABEL_INPUT_MAX_USERS,
|
||||
MENU_ENUM_LABEL_VALUE_INPUT_MAX_USERS,
|
||||
input_max_users,
|
||||
@ -6055,31 +6058,34 @@ static bool setting_append_list(
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
/* TODO/FIXME - add enum_idx */
|
||||
|
||||
for(user = 0; user < settings->uints.input_max_users; user++)
|
||||
{
|
||||
char s1[64], s2[64];
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
for(user = 0; user < max_users; user++)
|
||||
{
|
||||
char s1[64], s2[64];
|
||||
|
||||
snprintf(s1, sizeof(s1), "%s_user_p%d", msg_hash_to_str(MENU_ENUM_LABEL_NETWORK_REMOTE_ENABLE), user + 1);
|
||||
snprintf(s2, sizeof(s2), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETWORK_USER_REMOTE_ENABLE), user + 1);
|
||||
snprintf(s1, sizeof(s1), "%s_user_p%d", msg_hash_to_str(MENU_ENUM_LABEL_NETWORK_REMOTE_ENABLE), user + 1);
|
||||
snprintf(s2, sizeof(s2), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETWORK_USER_REMOTE_ENABLE), user + 1);
|
||||
|
||||
|
||||
CONFIG_BOOL_ALT(
|
||||
list, list_info,
|
||||
&settings->bools.network_remote_enable_user[user],
|
||||
/* todo: figure out this value, it's working fine but I don't think this is correct */
|
||||
strdup(s1),
|
||||
strdup(s2),
|
||||
false,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_ADVANCED);
|
||||
settings_data_list_current_add_free_flags(list, list_info, SD_FREE_FLAG_NAME | SD_FREE_FLAG_SHORT);
|
||||
menu_settings_list_current_add_enum_idx(list, list_info, (enum msg_hash_enums)(MENU_ENUM_LABEL_NETWORK_REMOTE_USER_1_ENABLE + user));
|
||||
CONFIG_BOOL_ALT(
|
||||
list, list_info,
|
||||
&settings->bools.network_remote_enable_user[user],
|
||||
/* todo: figure out this value, it's working fine but I don't think this is correct */
|
||||
strdup(s1),
|
||||
strdup(s2),
|
||||
false,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_ADVANCED);
|
||||
settings_data_list_current_add_free_flags(list, list_info, SD_FREE_FLAG_NAME | SD_FREE_FLAG_SHORT);
|
||||
menu_settings_list_current_add_enum_idx(list, list_info, (enum msg_hash_enums)(MENU_ENUM_LABEL_NETWORK_REMOTE_USER_1_ENABLE + user));
|
||||
}
|
||||
}
|
||||
|
||||
CONFIG_BOOL(
|
||||
|
@ -347,12 +347,12 @@ static bool menu_input_key_bind_poll_find_trigger(
|
||||
struct menu_bind_state *new_state)
|
||||
{
|
||||
unsigned i;
|
||||
settings_t *settings = config_get_ptr();
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
|
||||
if (!state || !new_state)
|
||||
return false;
|
||||
|
||||
for (i = 0; i < settings->uints.input_max_users; i++)
|
||||
for (i = 0; i < max_users; i++)
|
||||
{
|
||||
if (!menu_input_key_bind_poll_find_trigger_pad(
|
||||
state, new_state, i))
|
||||
|
@ -1085,7 +1085,7 @@ int runloop_iterate(unsigned *sleep_ms)
|
||||
#else
|
||||
bool menu_is_alive = false;
|
||||
#endif
|
||||
unsigned max_users = settings->uints.input_max_users;
|
||||
unsigned max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
uint64_t current_input =
|
||||
|
||||
#ifdef HAVE_MENU
|
||||
|
@ -453,7 +453,7 @@ bool input_autoconfigure_connect(
|
||||
state->idx = idx;
|
||||
state->vid = vid;
|
||||
state->pid = pid;
|
||||
state->max_users = settings->uints.input_max_users;
|
||||
state->max_users = *(input_driver_get_uint(INPUT_ACTION_MAX_USERS));
|
||||
|
||||
input_config_set_device_name(state->idx, state->name);
|
||||
input_config_set_pid(state->idx, state->pid);
|
||||
|
Loading…
Reference in New Issue
Block a user