From e559fd5e685f2a1b30ae0610f753acda03004ca2 Mon Sep 17 00:00:00 2001 From: Miku AuahDark Date: Thu, 1 Jun 2023 15:33:04 +0800 Subject: [PATCH] Pass pointer of PHYSFS_AndroidInit struct in Android when initializing PhysFS. --- src/common/android.cpp | 9 +++++++++ src/common/android.h | 6 ++++++ src/modules/filesystem/physfs/Filesystem.cpp | 5 +---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/common/android.cpp b/src/common/android.cpp index 696d91c14..a0a1f4444 100644 --- a/src/common/android.cpp +++ b/src/common/android.cpp @@ -804,6 +804,15 @@ const char *getCRequirePath() return path; } +const char *getArg0() +{ + static PHYSFS_AndroidInit androidInit = { + SDL_AndroidGetJNIEnv(), + SDL_AndroidGetActivity() + }; + return (const char *) &androidInit; +} + } // android } // love diff --git a/src/common/android.h b/src/common/android.h index 44d2a074d..5e263f713 100644 --- a/src/common/android.h +++ b/src/common/android.h @@ -103,6 +103,12 @@ bool checkFusedGame(void **physfsIO_Out); const char *getCRequirePath(); +/** + * Retrieve PHYSFS_AndroidInit structure. + * @return Pointer to PHYSFS_AndroidInit structure, casted to pointer of char. + */ +const char *getArg0(); + } // android } // love diff --git a/src/modules/filesystem/physfs/Filesystem.cpp b/src/modules/filesystem/physfs/Filesystem.cpp index 09edabdd0..d3c650269 100644 --- a/src/modules/filesystem/physfs/Filesystem.cpp +++ b/src/modules/filesystem/physfs/Filesystem.cpp @@ -125,10 +125,7 @@ const char *Filesystem::getName() const void Filesystem::init(const char *arg0) { #ifdef LOVE_ANDROID - // TODO: This should be a pointer to an initializeed PHYSFS_AndroidInit - // struct on android. But it's only used for PHYSFS_getBaseDir and - // PHYSFS_getPrefDir, which we don't use right now... - arg0 = nullptr; + arg0 = love::android::getArg0(); #endif if (!PHYSFS_init(arg0))