Android fix for magic tools under 64 bits devices by Terrence Sheflin, see 345d3cc78a

This commit is contained in:
Pere Pujal i Carabantes 2022-07-20 23:38:04 +02:00
parent 79c246976c
commit 73c1cabac1
3 changed files with 15 additions and 2 deletions

View file

@ -20,12 +20,18 @@
#include "android_assets.h" #include "android_assets.h"
AAssetManager * asset_manager = NULL; AAssetManager * asset_manager = NULL;
char* nativelibdir = NULL;
AAssetDir * open_asset_dir(char * dirname) AAssetDir * open_asset_dir(char * dirname)
{ {
return AAssetManager_openDir(asset_manager, dirname); return AAssetManager_openDir(asset_manager, dirname);
} }
char* get_nativelibdir()
{
return nativelibdir;
}
void load_assets_dir(char * dirname, tp_ftw_str ** ffilenames, unsigned * num_file_names) void load_assets_dir(char * dirname, tp_ftw_str ** ffilenames, unsigned * num_file_names)
{ {
AAssetDir* assetDir = AAssetManager_openDir(asset_manager, dirname); AAssetDir* assetDir = AAssetManager_openDir(asset_manager, dirname);
@ -70,6 +76,12 @@ JNIEXPORT jboolean Java_org_tuxpaint_tuxpaintActivity_managertojni(JNIEnv * env,
return 1; return 1;
} }
JNIEXPORT void Java_org_tuxpaint_tuxpaintActivity_setnativelibdir(JNIEnv * env, jclass clazz, jstring path)
{
const char *cpath = (*env)->GetStringUTFChars(env, path, NULL);
nativelibdir = strdup(cpath);
(*env)->ReleaseStringUTFChars(env, path, cpath);
}
void load_brushes_from_assets(SDL_Surface * screen, SDL_Texture *texture, SDL_Renderer *renderer, const char * dirname, void (*fn) (SDL_Surface * screen, void load_brushes_from_assets(SDL_Surface * screen, SDL_Texture *texture, SDL_Renderer *renderer, const char * dirname, void (*fn) (SDL_Surface * screen,

View file

@ -29,6 +29,7 @@
#define ASSETS_STAMPS_DIR "stamps/cartoon/tux" #define ASSETS_STAMPS_DIR "stamps/cartoon/tux"
AAssetDir * open_asset_dir(char * dirname); AAssetDir * open_asset_dir(char * dirname);
char* get_nativelibdir();
void load_brushes_from_assets(SDL_Surface * screen, SDL_Texture *texture, SDL_Renderer *renderer, const char * dirname, void (*fn) (SDL_Surface * screen, void load_brushes_from_assets(SDL_Surface * screen, SDL_Texture *texture, SDL_Renderer *renderer, const char * dirname, void (*fn) (SDL_Surface * screen,
SDL_Texture * texture, SDL_Texture * texture,
@ -48,5 +49,6 @@ void load_assets_dir(char * dirname, tp_ftw_str ** ffilenames, unsigned * num_f
JNIEXPORT jboolean Java_org_tuxpaint_tuxpaintActivity_managertojni(JNIEnv * env, jclass clazz, jobject mgr); JNIEXPORT jboolean Java_org_tuxpaint_tuxpaintActivity_managertojni(JNIEnv * env, jclass clazz, jobject mgr);
JNIEXPORT void Java_org_tuxpaint_tuxpaintActivity_setnativelibdir(JNIEnv * env, jclass clazz, jstring path);
#endif #endif

View file

@ -20338,8 +20338,7 @@ static void load_magic_plugins(void)
{ {
#if defined (__ANDROID__) #if defined (__ANDROID__)
/* Need this at runtime as Android installs on different locations depending on the user */ /* Need this at runtime as Android installs on different locations depending on the user */
place = strdup(SDL_AndroidGetInternalStoragePath()); place = strdup(get_nativelibdir());
strcpy(strstr(place, "/files"), "/lib/");
#else #else
place = strdup(MAGIC_PREFIX); place = strdup(MAGIC_PREFIX);
#endif #endif