Merge the two functions, fix JNI lifetime issues

Fixes the last part of #10885 finally.
This commit is contained in:
Henrik Rydgård committed 2025-09-05 10:31:51 +02:00
1 parent 2a7dad43c6
commit 073ef61643
5 files changed
+93 -100

No files matched your search

+25 -2
View File
@@ -29,12 +29,13 @@ static jmethodID computeRecursiveDirectorySize;
static jobject g_nativeActivity;
static jclass g_classActivity;
void Android_StorageSetNativeActivity(jobject nativeActivity) {
void Android_StorageSetActivity(jobject nativeActivity) {
g_nativeActivity = nativeActivity;
}
void Android_RegisterStorageCallbacks(JNIEnv * env, jobject obj) {
jclass localClass = env->GetObjectClass(obj);
jclass localClass = env->FindClass("org/ppsspp/ppsspp/PpssppActivity");
_dbg_assert_(localClass);
openContentUri = env->GetStaticMethodID(localClass, "openContentUri", "(Landroid/app/Activity;Ljava/lang/String;Ljava/lang/String;)I");
_dbg_assert_(openContentUri);
@@ -69,6 +70,28 @@ void Android_RegisterStorageCallbacks(JNIEnv * env, jobject obj) {
env->DeleteLocalRef(localClass); // cleanup local ref
}
void Android_UnregisterStorageCallbacks(JNIEnv * env) {
if (g_classActivity) {
env->DeleteGlobalRef(g_classActivity);
g_classActivity = nullptr;
}
g_nativeActivity = nullptr;
openContentUri = nullptr;
listContentUriDir = nullptr;
contentUriCreateFile = nullptr;
contentUriCreateDirectory = nullptr;
contentUriCopyFile = nullptr;
contentUriMoveFile = nullptr;
contentUriRemoveFile = nullptr;
contentUriRenameFileTo = nullptr;
contentUriGetFileInfo = nullptr;
contentUriFileExists = nullptr;
contentUriGetFreeStorageSpace = nullptr;
filePathGetFreeStorageSpace = nullptr;
isExternalStoragePreservedLegacy = nullptr;
computeRecursiveDirectorySize = nullptr;
}
bool Android_IsContentUri(std::string_view filename) {
return startsWith(filename, "content://");
}