Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
liblinphone
Commits
b87dd9f1
Commit
b87dd9f1
authored
Feb 15, 2018
by
Sylvain Berfini
🐮
Browse files
Fixed another leak in Java wrapper caused by listeners
parent
068cd9ce
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
10 deletions
+17
-10
wrappers/java/jni.mustache
wrappers/java/jni.mustache
+17
-10
No files found.
wrappers/java/jni.mustache
View file @
b87dd9f1
...
...
@@ -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
}}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment