From 8a973df32acff3fdd306e9e020b10e3dfca815e9 Mon Sep 17 00:00:00 2001 From: martin-s Date: Wed, 31 Aug 2011 11:32:49 +0000 Subject: [PATCH] Add:graphics_android:Save package name for later reuse git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@4733 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- navit/navit/graphics/android/graphics_android.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/navit/navit/graphics/android/graphics_android.c b/navit/navit/graphics/android/graphics_android.c index 3991cd7..fad09c5 100644 --- a/navit/navit/graphics/android/graphics_android.c +++ b/navit/navit/graphics/android/graphics_android.c @@ -55,6 +55,8 @@ struct graphics_priv { jobject Resources; jmethodID Resources_getIdentifier; + jobject packageName; + struct callback_list *cbl; struct window win; }; @@ -210,7 +212,6 @@ image_new(struct graphics_priv *gra, struct graphics_image_methods *meth, char * dbg(1,"enter %s\n",path); if (!strncmp(path,"res/drawable/",13)) { jstring a=(*jnienv)->NewStringUTF(jnienv, "drawable"); - jstring b=(*jnienv)->NewStringUTF(jnienv, "org.navitproject.navit"); char *path_noext=g_strdup(path+13); char *pos=strrchr(path_noext, '.'); if (pos) @@ -218,11 +219,10 @@ image_new(struct graphics_priv *gra, struct graphics_image_methods *meth, char * dbg(1,"path_noext=%s\n",path_noext); string = (*jnienv)->NewStringUTF(jnienv, path_noext); g_free(path_noext); - id=(*jnienv)->CallIntMethod(jnienv, gra->Resources, gra->Resources_getIdentifier, string, a, b); + id=(*jnienv)->CallIntMethod(jnienv, gra->Resources, gra->Resources_getIdentifier, string, a, gra->packageName); dbg(1,"id=%d\n",id); if (id) ret->Bitmap=(*jnienv)->CallStaticObjectMethod(jnienv, gra->BitmapFactoryClass, gra->BitmapFactory_decodeResource, gra->Resources, id); - (*jnienv)->DeleteLocalRef(jnienv, b); (*jnienv)->DeleteLocalRef(jnienv, a); } else { string = (*jnienv)->NewStringUTF(jnienv, path); @@ -500,7 +500,7 @@ static int graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, struct point *pnt, int w, int h, int alpha, int wraparound, int use_camera) { struct callback *cb; - jmethodID cid; + jmethodID cid, Context_getPackageName; dbg(0,"at 2 jnienv=%p\n",jnienv); if (!find_class_global("android/graphics/Paint", &ret->PaintClass)) @@ -540,6 +540,11 @@ graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, s if (!find_method(ret->ResourcesClass, "getIdentifier", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", &ret->Resources_getIdentifier)) return 0; + if (!find_method(ret->ContextClass, "getPackageName", "()Ljava/lang/String;", &Context_getPackageName)) + return 0; + ret->packageName=(*jnienv)->CallObjectMethod(jnienv, android_activity, Context_getPackageName); + (*jnienv)->NewGlobalRef(jnienv, ret->packageName); + if (!find_class_global("org/navitproject/navit/NavitGraphics", &ret->NavitGraphicsClass)) return 0; dbg(0,"at 3\n"); @@ -553,6 +558,7 @@ graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, s dbg(0,"result=%p\n",ret->NavitGraphics); if (ret->NavitGraphics) (*jnienv)->NewGlobalRef(jnienv, ret->NavitGraphics); + /* Create a single global Paint, otherwise android will quickly run out * of global refs.*/ -- 2.7.4