(Menu) Refactor init_core_info calls

This commit is contained in:
twinaphex 2014-08-16 06:23:51 +02:00
parent 57cf883814
commit 728b18a9fe
4 changed files with 17 additions and 23 deletions

View File

@ -2507,8 +2507,6 @@ static int menu_common_iterate(unsigned action)
if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "libretro_dir_path"))) if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "libretro_dir_path")))
menu_common_setting_set_current_string_dir(current_setting, dir); menu_common_setting_set_current_string_dir(current_setting, dir);
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
driver.menu_ctx->init_core_info(driver.menu);
menu_flush_stack_type(MENU_SETTINGS_PATH_OPTIONS); menu_flush_stack_type(MENU_SETTINGS_PATH_OPTIONS);
} }
else if (menu_type == MENU_CONFIG_DIR_PATH) else if (menu_type == MENU_CONFIG_DIR_PATH)
@ -2523,8 +2521,6 @@ static int menu_common_iterate(unsigned action)
if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "libretro_info_path"))) if ((current_setting = (rarch_setting_t*)setting_data_find_setting(setting_data, "libretro_info_path")))
menu_common_setting_set_current_string_dir(current_setting, dir); menu_common_setting_set_current_string_dir(current_setting, dir);
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
driver.menu_ctx->init_core_info(driver.menu);
menu_flush_stack_type(MENU_SETTINGS_PATH_OPTIONS); menu_flush_stack_type(MENU_SETTINGS_PATH_OPTIONS);
} }
else if (menu_type == MENU_SHADER_DIR_PATH) else if (menu_type == MENU_SHADER_DIR_PATH)
@ -3694,19 +3690,13 @@ static int menu_common_setting_set(unsigned id, unsigned action, rarch_setting_t
strlcpy(g_extern.savestate_dir, g_defaults.savestate_dir, sizeof(g_extern.savestate_dir)); strlcpy(g_extern.savestate_dir, g_defaults.savestate_dir, sizeof(g_extern.savestate_dir));
break; break;
case MENU_LIBRETRO_DIR_PATH: case MENU_LIBRETRO_DIR_PATH:
if (action == MENU_ACTION_START)
{
*g_settings.libretro_directory = '\0';
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
driver.menu_ctx->init_core_info(driver.menu);
}
break;
case MENU_LIBRETRO_INFO_DIR_PATH: case MENU_LIBRETRO_INFO_DIR_PATH:
if (action == MENU_ACTION_START) if (action == MENU_ACTION_START)
{ {
*g_settings.libretro_info_path = '\0'; *setting->value.string = '\0';
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
driver.menu_ctx->init_core_info(driver.menu); if (setting->change_handler)
setting->change_handler(setting);
} }
break; break;
case MENU_CONFIG_DIR_PATH: case MENU_CONFIG_DIR_PATH:

View File

@ -114,6 +114,7 @@ enum basic_event
RARCH_CMD_RECORD_DEINIT, RARCH_CMD_RECORD_DEINIT,
RARCH_CMD_HISTORY_DEINIT, RARCH_CMD_HISTORY_DEINIT,
RARCH_CMD_HISTORY_INIT, RARCH_CMD_HISTORY_INIT,
RARCH_CMD_CORE_INFO_INIT,
}; };
enum menu_enums enum menu_enums

View File

@ -3224,6 +3224,12 @@ void rarch_main_command(unsigned action)
content_playlist_free(g_extern.history); content_playlist_free(g_extern.history);
g_extern.history = NULL; g_extern.history = NULL;
break; break;
case RARCH_CMD_CORE_INFO_INIT:
#ifdef HAVE_MENU
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
driver.menu_ctx->init_core_info(driver.menu);
#endif
break;
} }
} }

View File

@ -1032,7 +1032,6 @@ static void general_read_handler(const void *data)
static void general_write_handler(const void *data) static void general_write_handler(const void *data)
{ {
unsigned rarch_cmd = RARCH_CMD_NONE; unsigned rarch_cmd = RARCH_CMD_NONE;
bool has_set_libretro_dir = false;
const rarch_setting_t *setting = (const rarch_setting_t*)data; const rarch_setting_t *setting = (const rarch_setting_t*)data;
if (!setting) if (!setting)
@ -1306,9 +1305,15 @@ static void general_write_handler(const void *data)
else if (!strcmp(setting->name, "libretro_path")) else if (!strcmp(setting->name, "libretro_path"))
strlcpy(g_settings.libretro, setting->value.string, sizeof(g_settings.libretro)); strlcpy(g_settings.libretro, setting->value.string, sizeof(g_settings.libretro));
else if (!strcmp(setting->name, "libretro_info_path")) else if (!strcmp(setting->name, "libretro_info_path"))
{
strlcpy(g_settings.libretro_info_path, setting->value.string, sizeof(g_settings.libretro_info_path)); strlcpy(g_settings.libretro_info_path, setting->value.string, sizeof(g_settings.libretro_info_path));
rarch_cmd = RARCH_CMD_CORE_INFO_INIT;
}
else if (!strcmp(setting->name, "libretro_dir_path")) else if (!strcmp(setting->name, "libretro_dir_path"))
{
strlcpy(g_settings.libretro_directory, setting->value.string, sizeof(g_settings.libretro_directory)); strlcpy(g_settings.libretro_directory, setting->value.string, sizeof(g_settings.libretro_directory));
rarch_cmd = RARCH_CMD_CORE_INFO_INIT;
}
else if (!strcmp(setting->name, "core_options_path")) else if (!strcmp(setting->name, "core_options_path"))
strlcpy(g_settings.core_options_path, setting->value.string, sizeof(g_settings.core_options_path)); strlcpy(g_settings.core_options_path, setting->value.string, sizeof(g_settings.core_options_path));
else if (!strcmp(setting->name, "cheat_database_path")) else if (!strcmp(setting->name, "cheat_database_path"))
@ -1369,14 +1374,6 @@ static void general_write_handler(const void *data)
if (rarch_cmd) if (rarch_cmd)
rarch_main_command(rarch_cmd); rarch_main_command(rarch_cmd);
if (has_set_libretro_dir)
{
#ifdef HAVE_MENU
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
driver.menu_ctx->init_core_info(driver.menu);
#endif
}
} }
#define NEXT (list[index++]) #define NEXT (list[index++])