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
94e9cc39
Commit
94e9cc39
authored
Sep 11, 2014
by
Sylvain Berfini
Browse files
Prevent creation of a new LinphoneChatMessage on each JNI callback
parent
e9a376a0
Changes
1
Hide whitespace changes
Inline
Side-by-side
coreapi/linphonecore_jni.cc
View file @
94e9cc39
...
...
@@ -623,8 +623,25 @@ public:
,
env
->
NewObject
(
lcData
->
addressClass
,
lcData
->
addressCtrId
,(
jlong
)
from
)
,
message
?
env
->
NewStringUTF
(
message
)
:
NULL
);
}
jobject
getChatMessage
(
JNIEnv
*
env
,
LinphoneChatMessage
*
msg
){
jobject
jobj
=
0
;
if
(
msg
!=
NULL
){
void
*
up
=
linphone_chat_message_get_user_data
(
msg
);
if
(
up
==
NULL
)
{
jobj
=
env
->
NewObject
(
chatMessageClass
,
chatMessageCtrId
,(
jlong
)
linphone_chat_message_ref
(
msg
));
jobj
=
env
->
NewGlobalRef
(
jobj
);
linphone_chat_message_set_user_data
(
msg
,(
void
*
)
jobj
);
}
else
{
jobj
=
(
jobject
)
up
;
}
}
return
jobj
;
}
static
void
message_received
(
LinphoneCore
*
lc
,
LinphoneChatRoom
*
room
,
LinphoneChatMessage
*
msg
)
{
JNIEnv
*
env
=
0
;
jobject
jmsg
;
jint
result
=
jvm
->
AttachCurrentThread
(
&
env
,
NULL
);
if
(
result
!=
0
)
{
ms_error
(
"cannot attach VM"
);
...
...
@@ -636,7 +653,7 @@ public:
,
lcData
->
messageReceivedId
,
lcData
->
core
,
env
->
NewObject
(
lcData
->
chatRoomClass
,
lcData
->
chatRoomCtrId
,(
jlong
)
room
)
,
env
->
NewObject
(
lcData
->
chatMessageClass
,
lcData
->
chatMessageCtrId
,(
jlong
)
linphone_c
hat
_m
essage
_ref
(
msg
)));
,
(
jmsg
=
lcData
->
getC
hat
M
essage
(
env
,
msg
)));
}
static
void
is_composing_received
(
LinphoneCore
*
lc
,
LinphoneChatRoom
*
room
)
{
JNIEnv
*
env
=
0
;
...
...
@@ -807,6 +824,7 @@ public:
static
void
fileTransferProgressIndication
(
LinphoneCore
*
lc
,
LinphoneChatMessage
*
message
,
const
LinphoneContent
*
content
,
size_t
progress
)
{
JNIEnv
*
env
=
0
;
jobject
jmsg
;
jint
result
=
jvm
->
AttachCurrentThread
(
&
env
,
NULL
);
if
(
result
!=
0
)
{
ms_error
(
"cannot attach VM"
);
...
...
@@ -816,13 +834,14 @@ public:
env
->
CallVoidMethod
(
lcData
->
listener
,
lcData
->
fileTransferProgressIndicationId
,
lcData
->
core
,
message
?
env
->
NewObject
(
lcData
->
chatMessageClass
,
lcData
->
chatMessageCtrId
,
(
jlong
)
message
)
:
NULL
,
(
jmsg
=
lcData
->
getChatMessage
(
env
,
message
)
)
,
content
?
create_java_linphone_content
(
env
,
content
)
:
NULL
,
progress
);
}
static
void
fileTransferSend
(
LinphoneCore
*
lc
,
LinphoneChatMessage
*
message
,
const
LinphoneContent
*
content
,
char
*
buff
,
size_t
*
size
)
{
JNIEnv
*
env
=
0
;
jobject
jmsg
;
size_t
asking
=
*
size
;
jint
result
=
jvm
->
AttachCurrentThread
(
&
env
,
NULL
);
if
(
result
!=
0
)
{
...
...
@@ -833,7 +852,7 @@ public:
*
size
=
env
->
CallIntMethod
(
lcData
->
listener
,
lcData
->
fileTransferSendId
,
lcData
->
core
,
message
?
env
->
NewObject
(
lcData
->
chatMessageClass
,
lcData
->
chatMessageCtrId
,
(
jlong
)
message
)
:
NULL
,
(
jmsg
=
lcData
->
getChatMessage
(
env
,
message
)
)
,
content
?
create_java_linphone_content
(
env
,
content
)
:
NULL
,
buff
?
env
->
NewDirectByteBuffer
(
buff
,
asking
)
:
NULL
,
asking
);
...
...
@@ -841,6 +860,7 @@ public:
static
void
fileTransferRecv
(
LinphoneCore
*
lc
,
LinphoneChatMessage
*
message
,
const
LinphoneContent
*
content
,
const
char
*
buff
,
size_t
size
)
{
JNIEnv
*
env
=
0
;
jobject
jmsg
;
jint
result
=
jvm
->
AttachCurrentThread
(
&
env
,
NULL
);
if
(
result
!=
0
)
{
ms_error
(
"cannot attach VM"
);
...
...
@@ -854,7 +874,7 @@ public:
env
->
CallVoidMethod
(
lcData
->
listener
,
lcData
->
fileTransferRecvId
,
lcData
->
core
,
message
?
env
->
NewObject
(
lcData
->
chatMessageClass
,
lcData
->
chatMessageCtrId
,
(
jlong
)
message
)
:
NULL
,
(
jmsg
=
lcData
->
getChatMessage
(
env
,
message
)
)
,
content
?
create_java_linphone_content
(
env
,
content
)
:
NULL
,
jbytes
,
size
);
...
...
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