mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-05-28 20:09:38 +08:00
Use a base path of "./" on Android
This allows filesystem operations to use internal storage and the asset system by default.
This commit is contained in:
@@ -77,6 +77,8 @@ extern "C" {
|
|||||||
* - `parent`: the containing directory of the bundle. For example:
|
* - `parent`: the containing directory of the bundle. For example:
|
||||||
* `/Applications/SDLApp/`
|
* `/Applications/SDLApp/`
|
||||||
*
|
*
|
||||||
|
* **Android Specific Functionality**: This function returns "./", which allows filesystem operations to use internal storage and the asset system.
|
||||||
|
*
|
||||||
* **Nintendo 3DS Specific Functionality**: This function returns "romfs"
|
* **Nintendo 3DS Specific Functionality**: This function returns "romfs"
|
||||||
* directory of the application as it is uncommon to store resources outside
|
* directory of the application as it is uncommon to store resources outside
|
||||||
* the executable. As such it is not a writable directory.
|
* the executable. As such it is not a writable directory.
|
||||||
|
|||||||
@@ -31,9 +31,7 @@
|
|||||||
|
|
||||||
char *SDL_SYS_GetBasePath(void)
|
char *SDL_SYS_GetBasePath(void)
|
||||||
{
|
{
|
||||||
// The current working directory is / on Android
|
return SDL_strdup("./");
|
||||||
SDL_Unsupported();
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
|
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
|
||||||
|
|||||||
@@ -263,12 +263,7 @@ static SDL_Storage *GENERIC_Title_Create(const char *override, SDL_PropertiesID
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const char *base = SDL_GetBasePath();
|
const char *base = SDL_GetBasePath();
|
||||||
// On Android, SDL_GetBasePath() can be NULL: use empty base.
|
|
||||||
#ifdef SDL_PLATFORM_ANDROID
|
|
||||||
basepath = base ? SDL_strdup(base) : SDL_strdup("");
|
|
||||||
#else
|
|
||||||
basepath = base ? SDL_strdup(base) : NULL;
|
basepath = base ? SDL_strdup(base) : NULL;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (basepath != NULL) {
|
if (basepath != NULL) {
|
||||||
@@ -343,8 +338,13 @@ SDL_Storage *GENERIC_OpenFileStorage(const char *path)
|
|||||||
SDL_Storage *result;
|
SDL_Storage *result;
|
||||||
char *basepath = NULL;
|
char *basepath = NULL;
|
||||||
char *prepend = NULL;
|
char *prepend = NULL;
|
||||||
bool is_absolute = false;
|
|
||||||
|
|
||||||
|
#ifdef SDL_PLATFORM_ANDROID
|
||||||
|
// Use a base path of "." so the filesystem operations fall back to internal storage and the asset system
|
||||||
|
if (!path || !*path) {
|
||||||
|
path = "./";
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (!path || !*path) {
|
if (!path || !*path) {
|
||||||
#ifdef SDL_PLATFORM_WINDOWS
|
#ifdef SDL_PLATFORM_WINDOWS
|
||||||
path = "C:/";
|
path = "C:/";
|
||||||
@@ -353,6 +353,7 @@ SDL_Storage *GENERIC_OpenFileStorage(const char *path)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool is_absolute = false;
|
||||||
#ifdef SDL_PLATFORM_WINDOWS
|
#ifdef SDL_PLATFORM_WINDOWS
|
||||||
const char ch = (char) SDL_toupper(path[0]);
|
const char ch = (char) SDL_toupper(path[0]);
|
||||||
is_absolute = (ch == '/') || // some sort of absolute Unix-style path.
|
is_absolute = (ch == '/') || // some sort of absolute Unix-style path.
|
||||||
@@ -367,6 +368,7 @@ SDL_Storage *GENERIC_OpenFileStorage(const char *path)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif // SDL_PLATFORM_ANDROID
|
||||||
|
|
||||||
const size_t len = SDL_strlen(path);
|
const size_t len = SDL_strlen(path);
|
||||||
const char *appended_separator = "";
|
const char *appended_separator = "";
|
||||||
|
|||||||
Reference in New Issue
Block a user