Create frontend_driver_get_salamander_basename

This commit is contained in:
twinaphex 2016-02-03 13:36:00 +01:00
parent 7d6ad7435f
commit 0e7729c660
6 changed files with 58 additions and 11 deletions

View File

@ -28,22 +28,16 @@
#else #else
#if defined(__CELLOS_LV2__) #if defined(__CELLOS_LV2__)
#define EXT_EXECUTABLES "self|bin" #define EXT_EXECUTABLES "self|bin"
#define SALAMANDER_FILE "EBOOT.BIN"
#elif defined(PSP) #elif defined(PSP)
#define EXT_EXECUTABLES "pbp" #define EXT_EXECUTABLES "pbp"
#define SALAMANDER_FILE "EBOOT.PBP"
#elif defined(VITA) #elif defined(VITA)
#define EXT_EXECUTABLES "velf" #define EXT_EXECUTABLES "velf"
#define SALAMANDER_FILE "default.velf"
#elif defined(_XBOX1) #elif defined(_XBOX1)
#define EXT_EXECUTABLES "xbe" #define EXT_EXECUTABLES "xbe"
#define SALAMANDER_FILE "default.xbe"
#elif defined(_XBOX360) #elif defined(_XBOX360)
#define EXT_EXECUTABLES "xex" #define EXT_EXECUTABLES "xex"
#define SALAMANDER_FILE "default.xex"
#elif defined(GEKKO) #elif defined(GEKKO)
#define EXT_EXECUTABLES "dol" #define EXT_EXECUTABLES "dol"
#define SALAMANDER_FILE "boot.dol"
#else #else
#define EXT_EXECUTABLES "" #define EXT_EXECUTABLES ""
#endif #endif

View File

@ -372,8 +372,16 @@ static void frontend_gx_set_fork(bool exitspawn, bool start_game, bool restart)
if (restart) if (restart)
{ {
char new_path[PATH_MAX_LENGTH]; char new_path[PATH_MAX_LENGTH];
fill_pathname_join(new_path, g_defaults.dir.core, SALAMANDER_FILE, sizeof(new_path)); char salamander_name[PATH_MAX_LENGTH];
runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, new_path);
if (frontend_driver_get_salamander_basename(salamander_name,
sizeof(salamander_name)))
{
fill_pathname_join(new_path, g_defaults.dir.core,
salamander_name, sizeof(new_path));
runloop_ctl(RUNLOOP_CTL_SET_CONTENT_PATH, new_path);
}
} }
#endif #endif

View File

@ -107,6 +107,37 @@ frontend_ctx_driver_t *frontend_ctx_init_first(void)
return frontend; return frontend;
} }
bool frontend_driver_get_salamander_basename(char *s, size_t len)
{
#ifdef HAVE_DYNAMIC
return false;
#else
#if defined(__CELLOS_LV2__)
strlcpy(s, "EBOOT.BIN", len);
return true;
#elif defined(PSP)
strlcpy(s, "EBOOT.PBP", len);
return true;
#elif defined(VITA)
strlcpy(s, "default.velf", len);
return true;
#elif defined(_XBOX1)
strlcpy(s, "default.xbe", len);
return true;
#elif defined(_XBOX360)
strlcpy(s, "default.xex", len);
return true;
#elif defined(HW_RVL)
strlcpy(s, "boot.dol", len);
return true;
#else
return false;
#endif
#endif
}
#ifndef IS_SALAMANDER #ifndef IS_SALAMANDER
frontend_ctx_driver_t *frontend_get_ptr(void) frontend_ctx_driver_t *frontend_get_ptr(void)
{ {

View File

@ -140,6 +140,8 @@ void frontend_driver_exitspawn(char *s, size_t len);
bool frontend_driver_has_fork(void); bool frontend_driver_has_fork(void);
bool frontend_driver_get_salamander_basename(char *s, size_t len);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -56,6 +56,7 @@ static void find_first_libretro_core(char *first_file,
for (i = 0; i < list->size && !ret; i++) for (i = 0; i < list->size && !ret; i++)
{ {
char fname[PATH_MAX_LENGTH]; char fname[PATH_MAX_LENGTH];
char salamander_name[PATH_MAX_LENGTH];
const char *libretro_elem = (const char*)list->elems[i].data; const char *libretro_elem = (const char*)list->elems[i].data;
RARCH_LOG("Checking library: \"%s\".\n", libretro_elem); RARCH_LOG("Checking library: \"%s\".\n", libretro_elem);
@ -65,9 +66,12 @@ static void find_first_libretro_core(char *first_file,
fill_pathname_base(fname, libretro_elem, sizeof(fname)); fill_pathname_base(fname, libretro_elem, sizeof(fname));
if (strncmp(fname, SALAMANDER_FILE, sizeof(fname)) == 0) if (!frontend_driver_get_salamander_basename(salamander_name, sizeof(salamander_name)))
break;
if (!strncmp(fname, salamander_name, sizeof(fname)))
{ {
if ((i + 1) == list->size) if (list->size == (i + 1))
{ {
RARCH_WARN("Entry is RetroArch Salamander itself, but is last entry. No choice but to set it.\n"); RARCH_WARN("Entry is RetroArch Salamander itself, but is last entry. No choice but to set it.\n");
strlcpy(first_file, fname, size_of_first_file); strlcpy(first_file, fname, size_of_first_file);

View File

@ -2262,7 +2262,15 @@ static int menu_displaylist_parse_generic(menu_displaylist_info_t *info, bool ho
#ifndef HAVE_DYNAMIC #ifndef HAVE_DYNAMIC
if (frontend_driver_has_fork()) if (frontend_driver_has_fork())
{ {
if (is_dir || string_is_equal_noncase(path, SALAMANDER_FILE)) char salamander_name[PATH_MAX_LENGTH];
if (frontend_driver_get_salamander_basename(salamander_name, sizeof(salamander_name)))
{
if (string_is_equal_noncase(path, salamander_name))
continue;
}
if (is_dir)
continue; continue;
} }
#endif #endif