(Menu) cut down on code duplication

This commit is contained in:
twinaphex 2014-08-20 18:00:06 +02:00
parent d1110ff592
commit d20be80155
6 changed files with 15 additions and 99 deletions

View File

@ -142,7 +142,7 @@ typedef struct menu_ctx_driver_backend
int (*core_setting_toggle)(unsigned, unsigned);
int (*setting_toggle)(unsigned, unsigned, unsigned, rarch_setting_t*);
int (*setting_set)(unsigned, unsigned, rarch_setting_t *);
void (*setting_set_label)(char *, size_t, unsigned *, unsigned);
void (*setting_set_label)(char *, size_t, unsigned *, unsigned,unsigned);
void (*defer_decision_automatic)(void);
void (*defer_decision_manual)(void);
const char *ident;

View File

@ -3715,8 +3715,13 @@ static void menu_common_setting_set_label_perf(char *type_str, size_t type_str_s
}
}
static void menu_common_setting_set_label(char *type_str, size_t type_str_size, unsigned *w, unsigned type)
static void menu_common_setting_set_label(char *type_str,
size_t type_str_size, unsigned *w, unsigned type, unsigned index)
{
rarch_setting_t *setting_data = (rarch_setting_t*)setting_data_get_list();
rarch_setting_t *setting = (rarch_setting_t*)setting_data_find_setting(setting_data,
driver.menu->selection_buf->list[index].label);
if (type >= MENU_SETTINGS_PERF_COUNTERS_BEGIN && type <= MENU_SETTINGS_PERF_COUNTERS_END)
menu_common_setting_set_label_perf(type_str, type_str_size, w, type, perf_counters_rarch,
type - MENU_SETTINGS_PERF_COUNTERS_BEGIN);
@ -3731,6 +3736,10 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
input_get_bind_string(type_str, &g_settings.input.binds[driver.menu->current_pad][type - MENU_SETTINGS_BIND_BEGIN], auto_bind, type_str_size);
}
else if (setting && setting->type == ST_BOOL)
{
strlcpy(type_str, *setting->value.boolean ? "ON" : "OFF", type_str_size);
}
else
{
switch (type)
@ -3757,30 +3766,12 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
case MENU_SETTINGS_VIDEO_GAMMA:
snprintf(type_str, type_str_size, "%d", g_extern.console.screen.gamma_correction);
break;
case MENU_SETTINGS_VIDEO_VSYNC:
strlcpy(type_str, g_settings.video.vsync ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_VIDEO_HW_SHARED_CONTEXT:
strlcpy(type_str, g_settings.video.shared_context ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_VIDEO_HARD_SYNC:
strlcpy(type_str, g_settings.video.hard_sync ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_VIDEO_BLACK_FRAME_INSERTION:
strlcpy(type_str, g_settings.video.black_frame_insertion ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_VIDEO_SWAP_INTERVAL:
snprintf(type_str, type_str_size, "%u", g_settings.video.swap_interval);
break;
case MENU_SETTINGS_VIDEO_THREADED:
strlcpy(type_str, g_settings.video.threaded ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_VIDEO_WINDOW_SCALE:
snprintf(type_str, type_str_size, "%.1fx", g_settings.video.scale);
break;
case MENU_SETTINGS_VIDEO_CROP_OVERSCAN:
strlcpy(type_str, g_settings.video.crop_overscan ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_VIDEO_HARD_SYNC_FRAMES:
snprintf(type_str, type_str_size, "%u", g_settings.video.hard_sync_frames);
break;
@ -3831,9 +3822,6 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
strlcpy(type_str, "N/A", type_str_size);
break;
}
case MENU_SETTINGS_VIDEO_INTEGER_SCALE:
strlcpy(type_str, g_settings.video.scale_integer ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_VIDEO_ASPECT_RATIO:
strlcpy(type_str, aspectratio_lut[g_settings.video.aspect_ratio_idx].name, type_str_size);
break;
@ -3864,12 +3852,6 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
strlcpy(type_str, "(DIR)", type_str_size);
*w = 5;
break;
case MENU_SETTINGS_REWIND_ENABLE:
strlcpy(type_str, g_settings.rewind_enable ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_GPU_SCREENSHOT:
strlcpy(type_str, g_settings.video.gpu_screenshot ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_REWIND_GRANULARITY:
snprintf(type_str, type_str_size, "%u", g_settings.rewind_granularity);
break;
@ -3890,27 +3872,6 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
break;
}
break;
case MENU_SETTINGS_LOGGING_VERBOSITY:
strlcpy(type_str, g_extern.verbosity ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_PERFORMANCE_COUNTERS_ENABLE:
strlcpy(type_str, g_extern.perfcnt_enable ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_CONFIG_SAVE_ON_EXIT:
strlcpy(type_str, g_settings.config_save_on_exit ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_SAVESTATE_AUTO_SAVE:
strlcpy(type_str, g_settings.savestate_auto_save ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_SAVESTATE_AUTO_LOAD:
strlcpy(type_str, g_settings.savestate_auto_load ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_BLOCK_SRAM_OVERWRITE:
strlcpy(type_str, g_settings.block_sram_overwrite ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_PER_CORE_CONFIG:
strlcpy(type_str, g_settings.core_specific_config ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_SRAM_AUTOSAVE:
if (g_settings.autosave_interval)
snprintf(type_str, type_str_size, "%u seconds", g_settings.autosave_interval);
@ -3927,15 +3888,6 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
case MENU_SETTINGS_AUDIO_LATENCY:
snprintf(type_str, type_str_size, "%d ms", g_settings.audio.latency);
break;
case MENU_SETTINGS_AUDIO_SYNC:
strlcpy(type_str, g_settings.audio.sync ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_AUDIO_ENABLE:
strlcpy(type_str, g_settings.audio.enable ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_AUDIO_MUTE:
strlcpy(type_str, g_extern.audio_data.mute ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_AUDIO_CONTROL_RATE_DELTA:
snprintf(type_str, type_str_size, "%.3f", g_settings.audio.rate_control_delta);
break;
@ -3948,9 +3900,6 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
case MENU_SETTINGS_SLOWMOTION_RATIO:
snprintf(type_str, type_str_size, "%.1fx", g_settings.slowmotion_ratio);
break;
case MENU_SETTINGS_DEBUG_TEXT:
snprintf(type_str, type_str_size, (g_settings.fps_show) ? "ON" : "OFF");
break;
case MENU_BROWSER_DIR_PATH:
strlcpy(type_str, *g_settings.menu_content_directory ? g_settings.menu_content_directory : "<default>", type_str_size);
break;
@ -4141,9 +4090,6 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
strlcpy(type_str, name, type_str_size);
}
break;
case MENU_SETTINGS_DEVICE_AUTODETECT_ENABLE:
strlcpy(type_str, g_settings.input.autodetect_enable ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_CUSTOM_BIND_MODE:
strlcpy(type_str, driver.menu->bind_mode_keyboard ? "Keyboard" : "Joypad", type_str_size);
break;
@ -4162,12 +4108,6 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
case MENU_SETTINGS_CUSTOM_BGM_CONTROL_ENABLE:
strlcpy(type_str, (g_extern.lifecycle_state & (1ULL << MODE_AUDIO_CUSTOM_BGM_ENABLE)) ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_PAUSE_IF_WINDOW_FOCUS_LOST:
strlcpy(type_str, g_settings.pause_nonactive ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_WINDOW_COMPOSITING_ENABLE:
strlcpy(type_str, g_settings.video.disable_composition ? "OFF" : "ON", type_str_size);
break;
case MENU_SETTINGS_USER_LANGUAGE:
{
static const char *modes[] = {
@ -4192,9 +4132,6 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
snprintf(type_str, type_str_size, "%s", g_settings.username);
break;
#ifdef HAVE_NETPLAY
case MENU_SETTINGS_NETPLAY_ENABLE:
strlcpy(type_str, g_extern.netplay_enable ? "ON" : "OFF", type_str_size);
break;
case MENU_SETTINGS_NETPLAY_HOST_IP_ADDRESS:
strlcpy(type_str, g_extern.netplay_server, type_str_size);
break;
@ -4204,31 +4141,10 @@ static void menu_common_setting_set_label(char *type_str, size_t type_str_size,
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;
case MENU_SETTINGS_NETPLAY_MODE:
snprintf(type_str, type_str_size, g_extern.netplay_is_client ? "ON" : "OFF");
break;
case MENU_SETTINGS_NETPLAY_SPECTATOR_MODE_ENABLE:
snprintf(type_str, type_str_size, g_extern.netplay_is_spectate ? "ON" : "OFF");
break;
#endif
case MENU_SETTINGS_PRIVACY_CAMERA_ALLOW:
snprintf(type_str, type_str_size, g_settings.camera.allow ? "ON" : "OFF");
break;
case MENU_SETTINGS_PRIVACY_LOCATION_ALLOW:
snprintf(type_str, type_str_size, g_settings.location.allow ? "ON" : "OFF");
break;
case MENU_SETTINGS_ONSCREEN_KEYBOARD_ENABLE:
snprintf(type_str, type_str_size, g_settings.osk.enable ? "ON" : "OFF");
break;
case MENU_SETTINGS_FONT_ENABLE:
snprintf(type_str, type_str_size, g_settings.video.font_enable ? "ON" : "OFF");
break;
case MENU_SETTINGS_FONT_SIZE:
snprintf(type_str, type_str_size, "%.1f", g_settings.video.font_size);
break;
case MENU_SETTINGS_LOAD_DUMMY_ON_CORE_SHUTDOWN:
snprintf(type_str, type_str_size, g_settings.load_dummy_on_core_shutdown ? "ON" : "OFF");
break;
default:
*type_str = '\0';
*w = 0;

View File

@ -538,7 +538,7 @@ static void rgui_render(void)
core_option_get_val(g_extern.system.core_options, type - MENU_SETTINGS_CORE_OPTION_START),
sizeof(type_str));
else if (driver.menu_ctx && driver.menu_ctx->backend && driver.menu_ctx->backend->setting_set_label)
driver.menu_ctx->backend->setting_set_label(type_str, sizeof(type_str), &w, type);
driver.menu_ctx->backend->setting_set_label(type_str, sizeof(type_str), &w, type, i);
char entry_title_buf[256];
char type_str_buf[64];

View File

@ -412,7 +412,7 @@ static void rmenu_render(void)
core_option_get_val(g_extern.system.core_options, type - MENU_SETTINGS_CORE_OPTION_START),
sizeof(type_str));
else if (driver.menu_ctx && driver.menu_ctx->backend && driver.menu_ctx->backend->setting_set_label)
driver.menu_ctx->backend->setting_set_label(type_str, sizeof(type_str), &w, type);
driver.menu_ctx->backend->setting_set_label(type_str, sizeof(type_str), &w, type, i);
char entry_title_buf[256];
char type_str_buf[64];

View File

@ -630,7 +630,7 @@ static void rmenu_xui_render(void)
core_option_get_val(g_extern.system.core_options, type - MENU_SETTINGS_CORE_OPTION_START),
sizeof(type_str));
else if (driver.menu_ctx && driver.menu_ctx->backend && driver.menu_ctx->backend->setting_set_label)
driver.menu_ctx->backend->setting_set_label(type_str, sizeof(type_str), &w, type);
driver.menu_ctx->backend->setting_set_label(type_str, sizeof(type_str), &w, type, i);
char entry_title_buf[256];
char type_str_buf[64];

View File

@ -1642,7 +1642,7 @@ rarch_setting_t* setting_data_get_list(void)
#ifdef HAVE_THREADS
CONFIG_UINT(g_settings.autosave_interval, "autosave_interval", "SRAM Autosave", autosave_interval, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 0, 10, true, false)
#endif
CONFIG_BOOL(g_settings.video.disable_composition, "video_disable_composition", "Window Compositing", disable_composition, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler)
CONFIG_BOOL(g_settings.video.disable_composition, "video_disable_composition", "Window Compositing Disable", disable_composition, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler)
CONFIG_BOOL(g_settings.pause_nonactive, "pause_nonactive", "Window Unfocus Pause", pause_nonactive, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler)
CONFIG_FLOAT(g_settings.fastforward_ratio, "fastforward_ratio", "Maximum Run Speed", fastforward_ratio, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 10, 0.1, true, true)
CONFIG_FLOAT(g_settings.slowmotion_ratio, "slowmotion_ratio", "Slow-Motion Ratio", slowmotion_ratio, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(1, 10, 1.0, true, true)