diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index 82122151e9..10936aa2b6 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -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; diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index e5800e17df..6aa259e50d 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -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; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index a9a0a24201..2d4456d1f3 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -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;