diff --git a/config.def.h b/config.def.h index ba2e89a2ff..27258af4fb 100644 --- a/config.def.h +++ b/config.def.h @@ -519,6 +519,9 @@ static const bool menu_show_start_screen = true; // Log level for libretro cores (GET_LOG_INTERFACE). static const unsigned libretro_log_level = 0; +#ifndef RARCH_DEFAULT_PORT +#define RARCH_DEFAULT_PORT 55435 +#endif //////////////////// // Keybinds, Joypad diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index 85982b8b23..2b8eb0f95a 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -336,8 +336,9 @@ static void menu_common_entries_init(menu_handle_t *menu, unsigned menu_type) file_list_push(menu->selection_buf, "", "netplay_spectator_mode_enable", MENU_SETTINGS_NETPLAY_SPECTATOR_MODE_ENABLE, 0); #ifdef HAVE_NETPLAY file_list_push(menu->selection_buf, "Host IP Address", "", MENU_SETTINGS_NETPLAY_HOST_IP_ADDRESS, 0); - file_list_push(menu->selection_buf, "TCP/UDP Port", "", MENU_SETTINGS_NETPLAY_TCP_UDP_PORT, 0); #endif + if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "netplay_tcp_udp_port"))) + file_list_push(menu->selection_buf, "", "netplay_tcp_udp_port", MENU_SETTINGS_NETPLAY_TCP_UDP_PORT, 0); if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "netplay_delay_frames"))) file_list_push(menu->selection_buf, "", "netplay_delay_frames", MENU_SETTINGS_NETPLAY_DELAY_FRAMES, 0); break; @@ -1972,35 +1973,44 @@ static void menu_common_setting_set_current_fraction(rarch_setting_t *setting, u static void menu_common_setting_set_current_unsigned_integer(rarch_setting_t *setting, unsigned action) { - switch (action) + if (!strcmp(setting->name, "netplay_tcp_udp_port")) { - case MENU_ACTION_LEFT: - if (*setting->value.unsigned_integer != setting->min) - *setting->value.unsigned_integer = *setting->value.unsigned_integer - setting->step; - - if (setting->enforce_minrange) - { - if (*setting->value.unsigned_integer < setting->min) - *setting->value.unsigned_integer = setting->min; - } - break; - - case MENU_ACTION_RIGHT: - case MENU_ACTION_OK: - *setting->value.unsigned_integer = *setting->value.unsigned_integer + setting->step; - - if (setting->enforce_maxrange) - { - if (*setting->value.unsigned_integer > setting->max) - *setting->value.unsigned_integer = setting->max; - } - break; - - case MENU_ACTION_START: + if (action == MENU_ACTION_OK) + menu_key_start_line(driver.menu, "TCP/UDP Port: ", netplay_port_callback); + else if (action == MENU_ACTION_START) *setting->value.unsigned_integer = setting->default_value.unsigned_integer; - break; } + else + { + switch (action) + { + case MENU_ACTION_LEFT: + if (*setting->value.unsigned_integer != setting->min) + *setting->value.unsigned_integer = *setting->value.unsigned_integer - setting->step; + if (setting->enforce_minrange) + { + if (*setting->value.unsigned_integer < setting->min) + *setting->value.unsigned_integer = setting->min; + } + break; + + case MENU_ACTION_RIGHT: + case MENU_ACTION_OK: + *setting->value.unsigned_integer = *setting->value.unsigned_integer + setting->step; + + if (setting->enforce_maxrange) + { + if (*setting->value.unsigned_integer > setting->max) + *setting->value.unsigned_integer = setting->max; + } + break; + + case MENU_ACTION_START: + *setting->value.unsigned_integer = setting->default_value.unsigned_integer; + break; + } + } if (setting->change_handler) setting->change_handler(setting); } @@ -3000,11 +3010,6 @@ static unsigned menu_gx_resolutions[GX_RESOLUTIONS_LAST][2] = { static unsigned menu_current_gx_resolution = GX_RESOLUTIONS_640_480; #endif -#ifndef RARCH_DEFAULT_PORT -#define RARCH_DEFAULT_PORT 55435 -#endif - - static int menu_common_setting_set(unsigned id, unsigned action, rarch_setting_t *setting) { struct retro_perf_counter **counters; @@ -3672,12 +3677,6 @@ static int menu_common_setting_set(unsigned id, unsigned action, rarch_setting_t else if (action == MENU_ACTION_START) *g_extern.netplay_server = '\0'; break; - case MENU_SETTINGS_NETPLAY_TCP_UDP_PORT: - if (action == MENU_ACTION_OK) - menu_key_start_line(driver.menu, "TCP/UDP Port: ", netplay_port_callback); - else if (action == MENU_ACTION_START) - g_extern.netplay_port = RARCH_DEFAULT_PORT; - break; #endif case MENU_SETTINGS_NETPLAY_NICKNAME: if (action == MENU_ACTION_OK) @@ -4098,9 +4097,6 @@ static void menu_common_setting_set_label(char *type_str, case MENU_SETTINGS_NETPLAY_HOST_IP_ADDRESS: strlcpy(type_str, g_extern.netplay_server, type_str_size); break; - case MENU_SETTINGS_NETPLAY_TCP_UDP_PORT: - snprintf(type_str, type_str_size, "%d", g_extern.netplay_port ? g_extern.netplay_port : RARCH_DEFAULT_PORT); - break; #endif default: *type_str = '\0'; diff --git a/frontend/menu/menu_input_line_cb.c b/frontend/menu/menu_input_line_cb.c index b9bd3d9829..b467a67c1a 100644 --- a/frontend/menu/menu_input_line_cb.c +++ b/frontend/menu/menu_input_line_cb.c @@ -73,9 +73,14 @@ static void menu_search_callback(void *userdata, const char *str) void netplay_port_callback(void *userdata, const char *str) { menu_handle_t *menu = (menu_handle_t*)userdata; + rarch_setting_t *current_setting = NULL; + rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(); - if (str && *str) - g_extern.netplay_port = strtoul(str, NULL, 0); + if (str && *str && setting_data) + { + if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "netplay_tcp_udp_port"))) + *current_setting->value.unsigned_integer = strtoul(str, NULL, 0); + } menu_key_end_line(menu); } @@ -93,7 +98,7 @@ void netplay_ipaddress_callback(void *userdata, const char *str) void netplay_nickname_callback(void *userdata, const char *str) { menu_handle_t *menu = (menu_handle_t*)userdata; - rarch_setting_t *current_setting; + rarch_setting_t *current_setting = NULL; rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(); if (str && *str && setting_data) diff --git a/general.h b/general.h index fd2509b90e..0f93ab27fe 100644 --- a/general.h +++ b/general.h @@ -626,7 +626,7 @@ struct global bool netplay_is_client; bool netplay_is_spectate; unsigned netplay_sync_frames; - uint16_t netplay_port; + unsigned netplay_port; #endif // Recording. diff --git a/settings_data.c b/settings_data.c index c21120da2c..0587345a24 100644 --- a/settings_data.c +++ b/settings_data.c @@ -1075,6 +1075,8 @@ static void general_read_handler(const void *data) #ifdef HAVE_NETPLAY else if (!strcmp(setting->name, "netplay_client_swap_input")) *setting->value.boolean = g_settings.input.netplay_client_swap_input; + else if (!strcmp(setting->name, "netplay_tcp_udp_port")) + *setting->value.unsigned_integer = g_extern.netplay_port; #endif #ifdef HAVE_OVERLAY else if (!strcmp(setting->name, "input_overlay")) @@ -1195,6 +1197,8 @@ static void general_read_handler(const void *data) *setting->value.boolean = g_extern.netplay_is_spectate; else if (!strcmp(setting->name, "netplay_delay_frames")) *setting->value.unsigned_integer = g_extern.netplay_sync_frames; + else if (!strcmp(setting->name, "netplay_tcp_udp_port")) + *setting->value.unsigned_integer = g_extern.netplay_port; #endif else if (!strcmp(setting->name, "log_verbosity")) *setting->value.boolean = g_extern.verbosity; @@ -1858,6 +1862,7 @@ rarch_setting_t* setting_data_get_list(void) CONFIG_BOOL(g_extern.netplay_is_client, "netplay_mode", "Netplay Client Enable", false, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_BOOL(g_extern.netplay_is_spectate, "netplay_spectator_mode_enable", "Netplay Spectator Enable", false, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) CONFIG_UINT(g_extern.netplay_sync_frames, "netplay_delay_frames", "Netplay Delay Frames", 0, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 10, 1, true, false) + CONFIG_UINT(g_extern.netplay_port, "netplay_tcp_udp_port", "Netplay TCP/UDP Port", RARCH_DEFAULT_PORT, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(1, 99999, 1, true, true) END_SUB_GROUP() END_GROUP() #endif