summaryrefslogtreecommitdiffstats
path: root/platform/android/file_access_android.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-04-22 12:52:16 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-04-22 12:52:16 +0200
commit8c474ddd4999883749b987b2d4b4c70f00ebd94d (patch)
treec6602732cad5bf09c73b991b6ee8dc9548df924c /platform/android/file_access_android.cpp
parent4b6629978e8d1be15c5e3bc74db55900fa40f52e (diff)
parentf291a4ed3a64dd95bf8136f352e5d0554ada4a7c (diff)
downloadredot-engine-8c474ddd4999883749b987b2d4b4c70f00ebd94d.tar.gz
Merge pull request #90710 from m4gr3d/fix_jstring_leaks
Fix leakage of JNI object references
Diffstat (limited to 'platform/android/file_access_android.cpp')
-rw-r--r--platform/android/file_access_android.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/platform/android/file_access_android.cpp b/platform/android/file_access_android.cpp
index f56eda4694..ae336d6f9d 100644
--- a/platform/android/file_access_android.cpp
+++ b/platform/android/file_access_android.cpp
@@ -31,8 +31,12 @@
#include "file_access_android.h"
#include "core/string/print_string.h"
+#include "thread_jandroid.h"
+
+#include <android/asset_manager_jni.h>
AAssetManager *FileAccessAndroid::asset_manager = nullptr;
+jobject FileAccessAndroid::j_asset_manager = nullptr;
String FileAccessAndroid::get_path() const {
return path_src;
@@ -257,3 +261,16 @@ void FileAccessAndroid::close() {
FileAccessAndroid::~FileAccessAndroid() {
_close();
}
+
+void FileAccessAndroid::setup(jobject p_asset_manager) {
+ JNIEnv *env = get_jni_env();
+ j_asset_manager = env->NewGlobalRef(p_asset_manager);
+ asset_manager = AAssetManager_fromJava(env, j_asset_manager);
+}
+
+void FileAccessAndroid::terminate() {
+ JNIEnv *env = get_jni_env();
+ ERR_FAIL_NULL(env);
+
+ env->DeleteGlobalRef(j_asset_manager);
+}