mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-02-07 14:18:25 +00:00
Fixed another leak in Java wrapper caused by listeners
This commit is contained in:
parent
068cd9ce45
commit
b87dd9f1a0
1 changed files with 17 additions and 10 deletions
|
|
@ -357,28 +357,36 @@ static {{return}} {{callbackName}}({{params}}) {
|
|||
{{#interfaces}}
|
||||
{{#isSingleListener}}
|
||||
void Java_{{jniPackage}}{{className}}Impl_setListener(JNIEnv* env, jobject thiz, jlong ptr, jobject jlistener) {
|
||||
{{classCName}} *cptr = ({{classCName}}*)ptr;
|
||||
{{classCName}}Cbs *cbs = {{cPrefix}}_get_callbacks(cptr);
|
||||
if (jlistener == NULL) {
|
||||
jobject listener = (jobject) {{cPrefix}}_cbs_get_user_data(cbs);
|
||||
{{cPrefix}}_cbs_set_user_data(cbs, NULL);
|
||||
if (listener != NULL) {
|
||||
env->DeleteGlobalRef(listener);
|
||||
}
|
||||
} else {
|
||||
jobject listener = env->NewGlobalRef(jlistener);
|
||||
{{cPrefix}}_cbs_set_user_data(cbs, listener);
|
||||
{{#callbacksList}}
|
||||
{{cPrefix}}_cbs_set_{{callback}}(cbs, {{callbackName}});
|
||||
{{/callbacksList}}
|
||||
}
|
||||
}
|
||||
{{/isSingleListener}}
|
||||
|
||||
{{#isMultiListener}}
|
||||
void Java_{{jniPackage}}{{className}}Impl_addListener(JNIEnv* env, jobject thiz, jlong ptr, jobject jlistener) {
|
||||
{{/isMultiListener}}
|
||||
{{classCName}} *cptr = ({{classCName}}*)ptr;
|
||||
jobject listener = env->NewGlobalRef(jlistener);
|
||||
{{#isSingleListener}}
|
||||
{{classCName}}Cbs *cbs = {{cPrefix}}_get_callbacks(cptr);
|
||||
{{/isSingleListener}}
|
||||
{{#isMultiListener}}
|
||||
{{classCName}}Cbs *cbs = linphone_factory_create_{{factoryName}}_cbs(NULL);
|
||||
{{/isMultiListener}}
|
||||
{{cPrefix}}_cbs_set_user_data(cbs, listener);
|
||||
{{#callbacksList}}
|
||||
{{cPrefix}}_cbs_set_{{callback}}(cbs, {{callbackName}});
|
||||
{{/callbacksList}}
|
||||
{{#isMultiListener}}
|
||||
{{cPrefix}}_add_callbacks(cptr, cbs);
|
||||
{{cPrefix}}_cbs_unref(cbs);
|
||||
{{/isMultiListener}}
|
||||
}
|
||||
{{#isMultiListener}}
|
||||
|
||||
void Java_{{jniPackage}}{{className}}Impl_removeListener(JNIEnv* env, jobject thiz, jlong ptr, jobject jlistener) {
|
||||
{{classCName}} *cptr = ({{classCName}}*)ptr;
|
||||
|
|
@ -396,7 +404,6 @@ void Java_{{jniPackage}}{{className}}Impl_removeListener(JNIEnv* env, jobject th
|
|||
}
|
||||
}
|
||||
{{/isMultiListener}}
|
||||
|
||||
{{/interfaces}}
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue