mirror of
https://github.com/libretro/RetroArch
synced 2025-04-02 07:20:34 +00:00
Ignore system subdir replacement if subdir has subdirs (#14887)
This commit is contained in:
parent
247991e53b
commit
f46550bd7c
@ -2270,6 +2270,11 @@ static int default_action_ok_load_content_with_core_from_menu(const char *_path,
|
|||||||
content_info.argv = NULL;
|
content_info.argv = NULL;
|
||||||
content_info.args = NULL;
|
content_info.args = NULL;
|
||||||
content_info.environ_get = NULL;
|
content_info.environ_get = NULL;
|
||||||
|
|
||||||
|
/* Clear playlist cache to avoid stale data when
|
||||||
|
* getting SYSTEM dir on launch via 'Load Content' */
|
||||||
|
playlist_free_cached();
|
||||||
|
|
||||||
if (!task_push_load_content_with_core(
|
if (!task_push_load_content_with_core(
|
||||||
_path, &content_info,
|
_path, &content_info,
|
||||||
(enum rarch_core_type)_type, NULL, NULL))
|
(enum rarch_core_type)_type, NULL, NULL))
|
||||||
|
35
runloop.c
35
runloop.c
@ -86,6 +86,7 @@
|
|||||||
#include <retro_miscellaneous.h>
|
#include <retro_miscellaneous.h>
|
||||||
#include <queues/message_queue.h>
|
#include <queues/message_queue.h>
|
||||||
#include <lists/dir_list.h>
|
#include <lists/dir_list.h>
|
||||||
|
#include <retro_dirent.h>
|
||||||
|
|
||||||
#ifdef EMSCRIPTEN
|
#ifdef EMSCRIPTEN
|
||||||
#include <emscripten/emscripten.h>
|
#include <emscripten/emscripten.h>
|
||||||
@ -1984,13 +1985,43 @@ bool runloop_environment_cb(unsigned cmd, void *data)
|
|||||||
if ( system_info
|
if ( system_info
|
||||||
&& !string_is_empty(system_info->library_name))
|
&& !string_is_empty(system_info->library_name))
|
||||||
{
|
{
|
||||||
|
bool entry_is_dir = false;
|
||||||
|
|
||||||
fill_pathname_join(dir_system_subdir,
|
fill_pathname_join(dir_system_subdir,
|
||||||
dir_system,
|
dir_system,
|
||||||
system_info->library_name,
|
system_info->library_name,
|
||||||
sizeof(dir_system_subdir));
|
sizeof(dir_system_subdir));
|
||||||
|
|
||||||
RARCH_DBG("[Environ]: SYSTEM_DIRECTORY candidate: \"%s\".\n",
|
/* Inspect if the subdir has dirs under it, and ignore
|
||||||
dir_system_subdir);
|
* it if so. Because for example PPSSPP already uses a
|
||||||
|
* subdir named after 'library_name', so it would have
|
||||||
|
* to be 'system/PPSSPP/PPSSPP' otherwise. */
|
||||||
|
if (path_is_valid(dir_system_subdir))
|
||||||
|
{
|
||||||
|
struct RDIR *entry = retro_opendir(dir_system_subdir);
|
||||||
|
if (entry)
|
||||||
|
{
|
||||||
|
while (retro_readdir(entry))
|
||||||
|
{
|
||||||
|
const char *entry_name = retro_dirent_get_name(entry);
|
||||||
|
if (strstr(entry_name, "."))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (retro_dirent_is_dir(entry, NULL))
|
||||||
|
{
|
||||||
|
entry_is_dir = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
retro_closedir(entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entry_is_dir)
|
||||||
|
dir_system_subdir[0] = '\0';
|
||||||
|
else
|
||||||
|
RARCH_DBG("[Environ]: SYSTEM_DIRECTORY candidate: \"%s\".\n",
|
||||||
|
dir_system_subdir);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
|
Loading…
x
Reference in New Issue
Block a user