From 9fa66fc345470d99073649e75579a1277c27e656 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 18 Oct 2017 13:33:05 +0200 Subject: [PATCH] Some fixes for Java wrapper --- wrappers/java/java_class.mustache | 4 ++-- wrappers/java/jni.mustache | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/wrappers/java/java_class.mustache b/wrappers/java/java_class.mustache index 7490f9476..9dc920ec5 100644 --- a/wrappers/java/java_class.mustache +++ b/wrappers/java/java_class.mustache @@ -171,10 +171,10 @@ class {{classImplName}} {{#isLinphoneFactory}}extends{{/isLinphoneFactory}}{{#is @Override public native void setDebugMode(boolean enable, String tag); - private native Core createCore(long nativePtr, CoreListener listener, String configPath, String factoryConfigPath); + private native Core createCore(Factory factory, CoreListener listener, String configPath, String factoryConfigPath); @Override public Core createCore(CoreListener listener, String configPath, String factoryConfigPath) { - return createCore(nativePtr, listener, configPath, factoryConfigPath); + return createCore(this, listener, configPath, factoryConfigPath); } {{/isLinphoneFactory}} diff --git a/wrappers/java/jni.mustache b/wrappers/java/jni.mustache index 492a49034..8da4789f0 100644 --- a/wrappers/java/jni.mustache +++ b/wrappers/java/jni.mustache @@ -70,6 +70,12 @@ static jlong GetObjectNativePtr(JNIEnv *env, jobject object) { return nativePtr; } +static void SetObjectNativePtr(JNIEnv *env, jobject object, jlong ptr) { + jclass objClass = env->GetObjectClass(object); + jfieldID nativePtrId = env->GetFieldID(objClass, "nativePtr", "J"); + env->SetLongField(object, nativePtrId, ptr); +} + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void linphone_android_log_handler(int prio, char *str) { @@ -357,8 +363,9 @@ jobject Java_{{jni_package}}CoreImpl_getMediastreamerFactory(JNIEnv *env, jobjec return env->NewObject(ljb->ms_factory_class, ljb->ms_factory_class_constructor, (jlong)factory); } -jobject Java_{{jni_package}}FactoryImpl_createCore(JNIEnv *env, jobject thiz, jlong ptr, jobject jlistener, jstring jconfig_path, jstring jfactory_config_path) { - LinphoneFactory *cptr = (LinphoneFactory*)ptr; +jobject Java_{{jni_package}}FactoryImpl_createCore(JNIEnv *env, jobject thiz, jobject jfactory, jobject jlistener, jstring jconfig_path, jstring jfactory_config_path) { + LinphoneFactory *cptr = linphone_factory_get(); + SetObjectNativePtr(env, jfactory, (jlong)cptr); // Set the C factory ptr as Factory.nativePtr for next factory calls LinphoneCoreCbs *cbs = linphone_factory_create_core_cbs(cptr); jobject listener = env->NewGlobalRef(jlistener);