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"
AAssetManager * asset_manager = NULL;
char* nativelibdir = NULL;
AAssetDir * open_asset_dir(char * 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)
{
AAssetDir* assetDir = AAssetManager_openDir(asset_manager, dirname);
@ -70,6 +76,12 @@ JNIEXPORT jboolean Java_org_tuxpaint_tuxpaintActivity_managertojni(JNIEnv * env,
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,

View file

@ -29,6 +29,7 @@
#define ASSETS_STAMPS_DIR "stamps/cartoon/tux"
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,
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 void Java_org_tuxpaint_tuxpaintActivity_setnativelibdir(JNIEnv * env, jclass clazz, jstring path);
#endif

View file

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