Call and answer related fixes and improvements

This commit is contained in:
Juha Heinanen
2022-08-03 12:29:30 +03:00
parent a042c974f1
commit 8c86912abe
5 changed files with 24 additions and 3 deletions

View File

@ -1290,6 +1290,14 @@ Java_com_tutpro_baresip_Api_message_1send(JNIEnv *env, jobject thiz, jlong ua, j
return err;
}
JNIEXPORT void JNICALL
Java_com_tutpro_baresip_Api_call_1destroy(JNIEnv *env, jobject thiz, jlong call)
{
re_thread_enter();
mem_deref((struct call *)call);
re_thread_leave();
}
JNIEXPORT jint JNICALL
Java_com_tutpro_baresip_Api_reload_1config(JNIEnv *env, jobject thiz)
{

View File

@ -73,6 +73,7 @@ object Api {
external fun call_replaces(callp: Long): Boolean
external fun call_replace_transfer(xfer_callp: Long, callp: Long): Boolean
external fun call_diverter_uri(callp: Long): String
external fun call_destroy(callp: Long)
external fun calls_mute(mute: Boolean)

View File

@ -86,6 +86,10 @@ class Call(val callp: Long, val ua: UserAgent, val peerUri: String, val dir: Str
if (ua.account.mediaEnc != "") security = R.drawable.box_red
}
fun destroy() {
Api.call_destroy(callp)
}
companion object {
fun calls(): ArrayList<Call> {

View File

@ -1669,7 +1669,7 @@ class MainActivity : AppCompatActivity() {
private fun call(ua: UserAgent, uri: String, onHoldCall: Call? = null): Boolean {
if (ua.account.aor != aorSpinner.tag)
spinToAor(ua.account.aor)
val callp = Api.ua_call_alloc(ua.uap, 0L, Api.VIDMODE_OFF)
val callp = ua.callAlloc(0L, Api.VIDMODE_OFF)
return if (callp != 0L) {
Log.d(TAG, "Adding outgoing call ${ua.uap}/$callp/$uri")
val call = Call(callp, ua, uri, "out", "outgoing", Utils.dtmfWatcher(callp))
@ -1681,8 +1681,12 @@ class MainActivity : AppCompatActivity() {
showCall(ua)
true
} else {
showCall(ua)
Log.w(TAG, "call_connect $callp failed")
if (onHoldCall != null)
onHoldCall.newCall = null
call.remove()
call.destroy()
showCall(ua)
false
}
} else {
@ -1692,7 +1696,7 @@ class MainActivity : AppCompatActivity() {
}
private fun acceptTransfer(ua: UserAgent, call: Call, uri: String) {
val newCallp = Api.ua_call_alloc(ua.uap, call.callp, Api.VIDMODE_OFF)
val newCallp = ua.callAlloc(call.callp, Api.VIDMODE_OFF)
if (newCallp != 0L) {
Log.d(TAG, "Adding outgoing call ${ua.uap}/$newCallp/$uri")
val newCall = Call(newCallp, ua, uri, "out", "transferring",

View File

@ -5,6 +5,10 @@ class UserAgent(val uap: Long) {
val account = Account(Api.ua_account(uap))
var status = R.drawable.dot_white
fun callAlloc(xCall: Long, videoMode: Int): Long {
return Api.ua_call_alloc(uap, xCall, videoMode)
}
fun add() {
BaresipService.uas.add(this)
}