(Deferred core) Fix direct loading of deferred core

This commit is contained in:
twinaphex 2014-09-04 05:10:44 +02:00
parent ca9fd4bc81
commit 0f12c67054
3 changed files with 12 additions and 11 deletions

View File

@ -1787,19 +1787,12 @@ static int menu_action_ok(const char *dir,
else if (!strcmp(menu_label, "detect_core_list") else if (!strcmp(menu_label, "detect_core_list")
&& type == MENU_FILE_PLAIN) && type == MENU_FILE_PLAIN)
{ {
const core_info_t *info = NULL; int ret = rarch_defer_core(g_extern.core_info,
int ret = rarch_defer_core(info, g_extern.core_info,
dir, path, driver.menu->deferred_path, dir, path, driver.menu->deferred_path,
sizeof(driver.menu->deferred_path)); sizeof(driver.menu->deferred_path));
if (ret == -1) if (ret == -1)
{ {
strlcpy(g_extern.fullpath, driver.menu->deferred_path,
sizeof(g_extern.fullpath));
if (path_file_exists(info->path))
strlcpy(g_settings.libretro, info->path,
sizeof(g_settings.libretro));
rarch_main_command(RARCH_CMD_LOAD_CONTENT); rarch_main_command(RARCH_CMD_LOAD_CONTENT);
rarch_main_command(RARCH_CMD_LOAD_CORE); rarch_main_command(RARCH_CMD_LOAD_CORE);

View File

@ -814,7 +814,7 @@ bool rarch_set_rumble_state(unsigned port,
void rarch_playlist_load_content(content_playlist_t *playlist, void rarch_playlist_load_content(content_playlist_t *playlist,
unsigned index); unsigned index);
int rarch_defer_core(const core_info_t *info, core_info_list_t *data, int rarch_defer_core(core_info_list_t *data,
const char *dir, const char *path, char *deferred_path, const char *dir, const char *path, char *deferred_path,
size_t sizeof_deferred_path); size_t sizeof_deferred_path);

View File

@ -3772,10 +3772,10 @@ void rarch_main_init_wrap(const struct rarch_main_wrap *args,
/* When selection is presented back, returns 0. /* When selection is presented back, returns 0.
* If it can make a decision right now, returns -1. */ * If it can make a decision right now, returns -1. */
int rarch_defer_core(const core_info_t *info, int rarch_defer_core(core_info_list_t *core_info, const char *dir,
core_info_list_t *core_info, const char *dir,
const char *path, char *deferred_path, size_t sizeof_deferred_path) const char *path, char *deferred_path, size_t sizeof_deferred_path)
{ {
const core_info_t *info = NULL;
size_t supported = 0; size_t supported = 0;
fill_pathname_join(deferred_path, dir, path, sizeof_deferred_path); fill_pathname_join(deferred_path, dir, path, sizeof_deferred_path);
@ -3786,7 +3786,15 @@ int rarch_defer_core(const core_info_t *info,
/* Can make a decision right now. */ /* Can make a decision right now. */
if (supported == 1) if (supported == 1)
{
strlcpy(g_extern.fullpath, deferred_path,
sizeof(g_extern.fullpath));
if (path_file_exists(info->path))
strlcpy(g_settings.libretro, info->path,
sizeof(g_settings.libretro));
return -1; return -1;
}
return 0; return 0;
} }