Browse Source

filesystem: android: simplify code, get getAssets method only once, remove unneeded casts and memsets (where Mem_Calloc is used)

pull/2/head
Alibek Omarov 8 months ago
parent
commit
d67a4234cc
  1. 29
      filesystem/android.c

29
filesystem/android.c

@ -42,13 +42,6 @@ struct android_assets_s
AAssetDir *dir; AAssetDir *dir;
}; };
/*
struct android_saf_s
{
};
*/
struct jni_methods_s struct jni_methods_s
{ {
JNIEnv *env; JNIEnv *env;
@ -57,15 +50,14 @@ struct jni_methods_s
jmethodID getPackageName; jmethodID getPackageName;
jmethodID getCallingPackage; jmethodID getCallingPackage;
jmethodID getAssetsList; jmethodID getAssetsList;
jmethodID getAssets;
} jni; } jni;
static void Android_GetAssetManager( android_assets_t *assets ) static void Android_GetAssetManager( android_assets_t *assets )
{ {
jmethodID getAssets;
jobject assetManager; 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, jni.getAssets, assets->engine );
assetManager = (*jni.env)->CallObjectMethod( jni.env, jni.activity, getAssets, assets->engine );
if( assetManager ) if( assetManager )
assets->asset_manager = AAssetManager_fromJava( jni.env, 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 ) static android_assets_t *FS_LoadAndroidAssets( qboolean engine )
{ {
android_assets_t *assets = (android_assets_t *)Mem_Calloc( fs_mempool, sizeof( android_assets_t )); android_assets_t *assets = Mem_Calloc( fs_mempool, sizeof( *assets ));
memset( assets, 0, sizeof( android_assets_t ));
assets->engine = engine; 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 ) 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 ); AAsset *assets = AAssetManager_open( search->assets->asset_manager, filename, AASSET_MODE_RANDOM );
file->handle = AAsset_openFileDescriptor( assets, &file->offset, &file->real_length ); 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; android_assets_t *assets = NULL;
qboolean engine = true; qboolean engine = true;
if(( flags & FS_STATIC_PATH ) || ( flags & FS_CUSTOM_PATH )) if( FBitSet( flags, FS_STATIC_PATH | FS_CUSTOM_PATH ))
return NULL; 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; engine = false;
assets = FS_LoadAndroidAssets( engine ); assets = FS_LoadAndroidAssets( engine );
if( !assets ) 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; return NULL;
} }
Q_strncpy( assets->package_name, Android_GetPackageName( engine ), sizeof( assets->package_name )); Q_strncpy( assets->package_name, Android_GetPackageName( engine ), sizeof( assets->package_name ));
search = (searchpath_t *)Mem_Calloc( fs_mempool, sizeof( searchpath_t )); search = Mem_Calloc( fs_mempool, sizeof( *search ));
memset( search, 0, sizeof( searchpath_t ));
Q_strncpy( search->filename, assets->package_name, sizeof( search->filename )); Q_strncpy( search->filename, assets->package_name, sizeof( search->filename ));
search->assets = assets; search->assets = assets;
search->type = SEARCHPATH_ANDROID_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->pfnPrintInfo = FS_PrintInfo_AndroidAssets;
search->pfnClose = FS_Close_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.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.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.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 #endif // XASH_ANDROID

Loading…
Cancel
Save