From d67a4234cc8244bd46ba0c45d317560475cdeb0b Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Fri, 3 Nov 2023 16:29:57 +0300 Subject: [PATCH] filesystem: android: simplify code, get getAssets method only once, remove unneeded casts and memsets (where Mem_Calloc is used) --- filesystem/android.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/filesystem/android.c b/filesystem/android.c index f7f0910d..88c2f303 100644 --- a/filesystem/android.c +++ b/filesystem/android.c @@ -42,13 +42,6 @@ struct android_assets_s AAssetDir *dir; }; -/* -struct android_saf_s -{ - -}; -*/ - struct jni_methods_s { JNIEnv *env; @@ -57,15 +50,14 @@ struct jni_methods_s jmethodID getPackageName; jmethodID getCallingPackage; jmethodID getAssetsList; + jmethodID getAssets; } jni; static void Android_GetAssetManager( android_assets_t *assets ) { - jmethodID getAssets; jobject assetManager; - getAssets = (*jni.env)->GetMethodID( jni.env, jni.activity_class, "getAssets", "(Z)Landroid/content/res/AssetManager;" ); - assetManager = (*jni.env)->CallObjectMethod( jni.env, jni.activity, getAssets, assets->engine ); + assetManager = (*jni.env)->CallObjectMethod( jni.env, jni.activity, jni.getAssets, assets->engine ); if( assetManager ) assets->asset_manager = AAssetManager_fromJava( jni.env, assetManager ); @@ -117,8 +109,7 @@ static void FS_CloseAndroidAssets( android_assets_t *assets ) static android_assets_t *FS_LoadAndroidAssets( qboolean engine ) { - android_assets_t *assets = (android_assets_t *)Mem_Calloc( fs_mempool, sizeof( android_assets_t )); - memset( assets, 0, sizeof( android_assets_t )); + android_assets_t *assets = Mem_Calloc( fs_mempool, sizeof( *assets )); assets->engine = engine; @@ -229,7 +220,7 @@ static void FS_Search_AndroidAssets( searchpath_t *search, stringlist_t *list, c static file_t *FS_OpenFile_AndroidAssets( searchpath_t *search, const char *filename, const char *mode, int pack_ind ) { - file_t *file = (file_t *)Mem_Calloc( fs_mempool, sizeof( file_t )); + file_t *file = Mem_Calloc( fs_mempool, sizeof( *file )); AAsset *assets = AAssetManager_open( search->assets->asset_manager, filename, AASSET_MODE_RANDOM ); file->handle = AAsset_openFileDescriptor( assets, &file->offset, &file->real_length ); @@ -279,29 +270,28 @@ searchpath_t *FS_AddAndroidAssets_Fullpath( const char *path, int flags ) android_assets_t *assets = NULL; qboolean engine = true; - if(( flags & FS_STATIC_PATH ) || ( flags & FS_CUSTOM_PATH )) + if( FBitSet( flags, FS_STATIC_PATH | FS_CUSTOM_PATH )) return NULL; - if(( flags & FS_GAMEDIR_PATH ) && Q_stricmp( GI->basedir, GI->gamefolder )) + if( FBitSet( flags, FS_GAMEDIR_PATH ) && Q_stricmp( GI->basedir, GI->gamefolder )) engine = false; assets = FS_LoadAndroidAssets( engine ); if( !assets ) { - Con_Reportf( S_ERROR "%s: unable to load Android assets \"%s\"\n", __FUNCTION__, Android_GetPackageName( engine ) ); + Con_Reportf( S_ERROR "%s: unable to load Android assets \"%s\"\n", __FUNCTION__, Android_GetPackageName( engine )); return NULL; } Q_strncpy( assets->package_name, Android_GetPackageName( engine ), sizeof( assets->package_name )); - search = (searchpath_t *)Mem_Calloc( fs_mempool, sizeof( searchpath_t )); - memset( search, 0, sizeof( searchpath_t )); + search = Mem_Calloc( fs_mempool, sizeof( *search )); Q_strncpy( search->filename, assets->package_name, sizeof( search->filename )); search->assets = assets; search->type = SEARCHPATH_ANDROID_ASSETS; - search->flags = FS_NOWRITE_PATH | FS_CUSTOM_PATH; + SetBits( search->flags, FS_NOWRITE_PATH | FS_CUSTOM_PATH ); search->pfnPrintInfo = FS_PrintInfo_AndroidAssets; search->pfnClose = FS_Close_AndroidAssets; @@ -329,6 +319,7 @@ void FS_InitAndroid( void ) jni.getPackageName = (*jni.env)->GetMethodID( jni.env, jni.activity_class, "getPackageName", "()Ljava/lang/String;" ); jni.getCallingPackage = (*jni.env)->GetMethodID( jni.env, jni.activity_class, "getCallingPackage", "()Ljava/lang/String;" ); jni.getAssetsList = (*jni.env)->GetMethodID( jni.env, jni.activity_class, "getAssetsList", "(ZLjava/lang/String;)[Ljava/lang/String;" ); + jni.getAssets = (*jni.env)->GetMethodID( jni.env, jni.activity_class, "getAssets", "(Z)Landroid/content/res/AssetManager;" ); } #endif // XASH_ANDROID