[DEV] Fix reference to java object + Fix memory leak in setTitle

This commit is contained in:
Keidan (K. Billonneau) 2013-07-24 07:46:36 +02:00
parent ced259175f
commit d073a04e29

View File

@ -131,8 +131,11 @@ void SendJavaSetTitle(const char * dataString)
EWOL_ERROR("C->java : No data to send ..."); EWOL_ERROR("C->java : No data to send ...");
return; return;
} }
//Call java ... //Call java ...
JavaVirtualMachinePointer->CallVoidMethod(javaObjectEwolCallbackAndActivity, javaMethodEwolActivitySetTitle, JavaVirtualMachinePointer->NewStringUTF(dataString)); jstring title = JavaVirtualMachinePointer->NewStringUTF(dataString);
JavaVirtualMachinePointer->CallVoidMethod(javaObjectEwolCallbackAndActivity, javaMethodEwolActivitySetTitle, title);
JavaVirtualMachinePointer->DeleteLocalRef(title);
// manage execption : // manage execption :
java_check_exception(JavaVirtualMachinePointer); java_check_exception(JavaVirtualMachinePointer);
java_detach_current_thread(status); java_detach_current_thread(status);
@ -257,9 +260,8 @@ extern "C"
"orientationUpdate", "(I)V"); "orientationUpdate", "(I)V");
//javaObjectActivity = JavaVirtualMachinePointer->NewGlobalRef(obj); javaObjectEwolCallbackAndActivity = env->NewGlobalRef(objCallback);
/* realy unsafe... */ //javaObjectEwolCallbackAndActivity = objCallback;
javaObjectEwolCallbackAndActivity = objCallback;
javaDefaultClassString = JavaVirtualMachinePointer->FindClass("java/lang/String" ); javaDefaultClassString = JavaVirtualMachinePointer->FindClass("java/lang/String" );
if (javaDefaultClassString == 0) { if (javaDefaultClassString == 0) {
@ -274,6 +276,7 @@ extern "C"
EWOL_DEBUG("*******************************************"); EWOL_DEBUG("*******************************************");
EWOL_DEBUG("** Remove JVM Pointer **"); EWOL_DEBUG("** Remove JVM Pointer **");
EWOL_DEBUG("*******************************************"); EWOL_DEBUG("*******************************************");
env->DeleteGlobalRef(javaObjectEwolCallbackAndActivity);
JavaVirtualMachinePointer = NULL; JavaVirtualMachinePointer = NULL;
} }
void Java_org_ewol_Ewol_touchEvent( JNIEnv* env, jobject thiz ) void Java_org_ewol_Ewol_touchEvent( JNIEnv* env, jobject thiz )