mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	Fix leakage of JNI object references
Fixes https://github.com/godotengine/godot/issues/87548
This commit is contained in:
		
							parent
							
								
									b8fa48be04
								
							
						
					
					
						commit
						f291a4ed3a
					
				
					 20 changed files with 139 additions and 32 deletions
				
			
		|  | @ -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); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fredia Huya-Kouadio
						Fredia Huya-Kouadio