Reimplement left/right callbacks for netplay MITM server setting

This commit is contained in:
twinaphex 2018-09-25 01:30:47 +02:00
parent a0efad3cc8
commit 390cb578a9
3 changed files with 78 additions and 82 deletions

View File

@ -599,44 +599,6 @@ static int action_left_shader_num_passes(unsigned type, const char *label,
return 0;
}
static int action_left_netplay_mitm_server(unsigned type, const char *label,
bool wraparound)
{
settings_t *settings = config_get_ptr();
int i;
bool found = false;
int list_len = ARRAY_SIZE(netplay_mitm_server_list);
for (i = 0; i < list_len; i++)
{
/* find the currently selected server in the list */
if (string_is_equal(settings->arrays.netplay_mitm_server, netplay_mitm_server_list[i].name))
{
/* move to the previous one in the list, wrap around if necessary */
if (i - 1 >= 0)
{
found = true;
strlcpy(settings->arrays.netplay_mitm_server, netplay_mitm_server_list[i - 1].name, sizeof(settings->arrays.netplay_mitm_server));
break;
}
else if (wraparound)
{
found = true;
strlcpy(settings->arrays.netplay_mitm_server, netplay_mitm_server_list[list_len - 1].name, sizeof(settings->arrays.netplay_mitm_server));
break;
}
}
}
if (!found)
{
/* current entry was invalid, go back to the end */
strlcpy(settings->arrays.netplay_mitm_server, netplay_mitm_server_list[list_len - 1].name, sizeof(settings->arrays.netplay_mitm_server));
}
return 0;
}
static int action_left_shader_watch_for_changes(unsigned type, const char *label,
bool wraparound)
{
@ -803,9 +765,6 @@ static int menu_cbs_init_bind_left_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_VIDEO_SHADER_DEFAULT_FILTER:
BIND_ACTION_LEFT(cbs, action_left_shader_filter_default);
break;
case MENU_ENUM_LABEL_NETPLAY_MITM_SERVER:
BIND_ACTION_LEFT(cbs, action_left_netplay_mitm_server);
break;
case MENU_ENUM_LABEL_SHADER_WATCH_FOR_CHANGES:
BIND_ACTION_LEFT(cbs, action_left_shader_watch_for_changes);
break;

View File

@ -380,44 +380,6 @@ static int action_right_shader_num_passes(unsigned type, const char *label,
return 0;
}
static int action_right_netplay_mitm_server(unsigned type, const char *label,
bool wraparound)
{
settings_t *settings = config_get_ptr();
unsigned i;
bool found = false;
unsigned list_len = ARRAY_SIZE(netplay_mitm_server_list);
for (i = 0; i < list_len; i++)
{
/* find the currently selected server in the list */
if (string_is_equal(settings->arrays.netplay_mitm_server, netplay_mitm_server_list[i].name))
{
/* move to the next one in the list, wrap around if necessary */
if (i + 1 < list_len)
{
found = true;
strlcpy(settings->arrays.netplay_mitm_server, netplay_mitm_server_list[i + 1].name, sizeof(settings->arrays.netplay_mitm_server));
break;
}
else if (wraparound)
{
found = true;
strlcpy(settings->arrays.netplay_mitm_server, netplay_mitm_server_list[0].name, sizeof(settings->arrays.netplay_mitm_server));
break;
}
}
}
if (!found)
{
/* current entry was invalid, go back to the start */
strlcpy(settings->arrays.netplay_mitm_server, netplay_mitm_server_list[0].name, sizeof(settings->arrays.netplay_mitm_server));
}
return 0;
}
static int action_right_shader_watch_for_changes(unsigned type, const char *label,
bool wraparound)
{
@ -695,9 +657,6 @@ static int menu_cbs_init_bind_right_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_VIDEO_SHADER_DEFAULT_FILTER:
BIND_ACTION_RIGHT(cbs, action_right_shader_filter_default);
break;
case MENU_ENUM_LABEL_NETPLAY_MITM_SERVER:
BIND_ACTION_RIGHT(cbs, action_right_netplay_mitm_server);
break;
case MENU_ENUM_LABEL_SHADER_WATCH_FOR_CHANGES:
BIND_ACTION_RIGHT(cbs, action_right_shader_watch_for_changes);
break;

View File

@ -653,6 +653,82 @@ static int setting_uint_action_left_crt_switch_resolution_super(
return 0;
}
static int setting_string_action_left_netplay_mitm_server(
void *data, bool wraparound)
{
int i;
bool found = false;
unsigned list_len = ARRAY_SIZE(netplay_mitm_server_list);
rarch_setting_t *setting = (rarch_setting_t*)data;
if (!setting)
return -1;
for (i = 0; i < list_len; i++)
{
/* find the currently selected server in the list */
if (string_is_equal(setting->value.target.string, netplay_mitm_server_list[i].name))
{
/* move to the previous one in the list, wrap around if necessary */
if (i - 1 >= 0)
{
found = true;
strlcpy(setting->value.target.string, netplay_mitm_server_list[i - 1].name, sizeof(setting->value.target.string));
break;
}
else if (wraparound)
{
found = true;
strlcpy(setting->value.target.string, netplay_mitm_server_list[list_len - 1].name, sizeof(setting->value.target.string));
break;
}
}
}
/* current entry was invalid, go back to the end */
if (!found)
strlcpy(setting->value.target.string, netplay_mitm_server_list[list_len - 1].name, sizeof(setting->value.target.string));
return 0;
}
static int setting_string_action_right_netplay_mitm_server(
void *data, bool wraparound)
{
unsigned i;
bool found = false;
unsigned list_len = ARRAY_SIZE(netplay_mitm_server_list);
rarch_setting_t *setting = (rarch_setting_t*)data;
if (!setting)
return -1;
for (i = 0; i < list_len; i++)
{
/* find the currently selected server in the list */
if (string_is_equal(setting->value.target.string, netplay_mitm_server_list[i].name))
{
/* move to the next one in the list, wrap around if necessary */
if (i + 1 < list_len)
{
found = true;
strlcpy(setting->value.target.string, netplay_mitm_server_list[i + 1].name, sizeof(setting->value.target.string));
break;
}
else if (wraparound)
{
found = true;
strlcpy(setting->value.target.string, netplay_mitm_server_list[0].name, sizeof(setting->value.target.string));
break;
}
}
}
/* current entry was invalid, go back to the start */
if (!found)
strlcpy(setting->value.target.string, netplay_mitm_server_list[0].name, sizeof(setting->value.target.string));
return 0;
}
static int setting_uint_action_right_crt_switch_resolution_super(
void *data, bool wraparound)
{
@ -8482,6 +8558,8 @@ static bool setting_append_list(
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_left = setting_string_action_left_netplay_mitm_server;
(*list)[list_info->index - 1].action_right = setting_string_action_right_netplay_mitm_server;
(*list)[list_info->index - 1].get_string_representation =
&setting_get_string_representation_netplay_mitm_server;