diff options
author | rikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2012-04-23 18:46:09 +0000 |
---|---|---|
committer | rikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2012-04-23 18:46:09 +0000 |
commit | 78800269a518fd3f792f00979ee6ade36a975aab (patch) | |
tree | 53fab91da33fc22885c541f192fcb505fac833aa /navit/android.c | |
parent | 117bd3ce5ec2a143f4735403d53792a165ac14b8 (diff) | |
download | navit-78800269a518fd3f792f00979ee6ade36a975aab.tar.gz |
Fix:Android:Fix global JNI references (fix crashes with target API 15)
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5036 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/android.c')
-rw-r--r-- | navit/android.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/navit/android.c b/navit/android.c index 1107f600c..8e320bb21 100644 --- a/navit/android.c +++ b/navit/android.c @@ -34,7 +34,7 @@ android_find_class_global(char *name, jclass *ret) dbg(0,"Failed to get Class %s\n",name); return 0; } - (*jnienv)->NewGlobalRef(jnienv, *ret); + *ret = (*jnienv)->NewGlobalRef(jnienv, *ret); return 1; } @@ -58,10 +58,9 @@ Java_org_navitproject_navit_Navit_NavitMain( JNIEnv* env, jobject thiz, jobject android_version=version; __android_log_print(ANDROID_LOG_ERROR,"test","called"); jnienv=env; - android_activity=activity; - (*jnienv)->NewGlobalRef(jnienv, activity); + android_activity = (*jnienv)->NewGlobalRef(jnienv, activity); langstr=(*env)->GetStringUTFChars(env, lang, NULL); - dbg(0,"enter env=%p thiz=%p activity=%p lang=%s version=%d\n",env,thiz,activity,langstr,version); + dbg(0,"enter env=%p thiz=%p activity=%p lang=%s version=%d\n",env,thiz,android_activity,langstr,version); setenv("LANG",langstr,1); (*env)->ReleaseStringUTFChars(env, lang, langstr); @@ -119,12 +118,11 @@ Java_org_navitproject_navit_NavitGraphics_KeypressCallback( JNIEnv* env, jobject } JNIEXPORT void JNICALL -Java_org_navitproject_navit_NavitTimeout_TimeoutCallback( JNIEnv* env, jobject thiz, int delete, int id) +Java_org_navitproject_navit_NavitTimeout_TimeoutCallback( JNIEnv* env, jobject thiz, int id) { - dbg(1,"enter %p %d %p\n",thiz, delete, (void *)id); - callback_call_0((struct callback *)id); - if (delete) - (*jnienv)->DeleteGlobalRef(jnienv, thiz); + void (*event_handler)(void *) = *(void **)id; + dbg(0,"enter %p %p\n",thiz, (void *)id); + event_handler((void*)id); } JNIEXPORT void JNICALL @@ -204,7 +202,8 @@ Java_org_navitproject_navit_NavitGraphics_CallbackSearchResultList( JNIEnv* env, my_jni_object.jo=thiz; my_jni_object.jm=aMethodID; - /* TODO (rikky#1#): does return nothing yet, also should use a generic callback instead of jni_object */
ret=search_by_address(sl,search_string,partial,&my_jni_object); + /* TODO (rikky#1#): does return nothing yet, also should use a generic callback instead of jni_object */ + ret=search_by_address(sl,search_string,partial,&my_jni_object); search_list_destroy(sl); dbg(0,"ret=%p\n",ret); |