From a50b50938ee8b183e7e6fa52197637f6aa46ff86 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 12 Mar 2022 21:50:23 -0500 Subject: [PATCH] ConnectionService: initialize rtpConnection for incoming calls Removes the need for repetitve findJingleRtpConnection() calls for onAnswer() and onReject() --- .../cheogram/android/ConnectionService.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/cheogram/java/com/cheogram/android/ConnectionService.java b/src/cheogram/java/com/cheogram/android/ConnectionService.java index e50a13084..c67e38b01 100644 --- a/src/cheogram/java/com/cheogram/android/ConnectionService.java +++ b/src/cheogram/java/com/cheogram/android/ConnectionService.java @@ -117,7 +117,7 @@ public class ConnectionService extends android.telecom.ConnectionService { Account account = xmppConnectionService.findAccountByJid(Jid.of(gateway[0])); Jid with = Jid.ofLocalAndDomain(tel, gateway[1]); - CheogramConnection connection = new CheogramConnection(account, with, postDial); + CheogramConnection connection = new CheogramConnection(account, with, postDial, null); PermissionManager permissionManager = PermissionManager.getInstance(this); permissionManager.setNotificationSettings( @@ -167,7 +167,10 @@ public class ConnectionService extends android.telecom.ConnectionService { Account account = xmppConnectionService.findAccountByJid(Jid.of(accountJid)); Jid with = Jid.of(withJid); - CheogramConnection connection = new CheogramConnection(account, with, null); + CheogramConnection connection = new CheogramConnection( + account, with, null, + xmppConnectionService.getJingleConnectionManager().findJingleRtpConnection(account, with, sessionId) + ); connection.setSessionId(sessionId); connection.setAddress( Uri.fromParts("tel", with.getLocal(), null), @@ -186,12 +189,13 @@ public class ConnectionService extends android.telecom.ConnectionService { protected String sessionId = null; protected Stack postDial = new Stack<>(); protected Icon gatewayIcon; - protected WeakReference rtpConnection = null; + protected WeakReference rtpConnection; - CheogramConnection(Account account, Jid with, String postDialString) { + CheogramConnection(Account account, Jid with, String postDialString, WeakReference rtpConnection) { super(); this.account = account; this.with = with; + this.rtpConnection = rtpConnection; gatewayIcon = Icon.createWithBitmap(xmppConnectionService.getAvatarService().get( account.getRoster().getContact(Jid.of(with.getDomain())), @@ -271,10 +275,6 @@ public class ConnectionService extends android.telecom.ConnectionService { @Override public void onAnswer() { - // For incoming calls, a connection update may not have been triggered before answering - // so we have to acquire the rtp connection object here - this.rtpConnection = xmppConnectionService.getJingleConnectionManager().findJingleRtpConnection(account, with, sessionId); - mHandler.post(() -> { rtpConnection.get().acceptCall(); }); @@ -282,8 +282,6 @@ public class ConnectionService extends android.telecom.ConnectionService { @Override public void onReject() { - this.rtpConnection = xmppConnectionService.getJingleConnectionManager().findJingleRtpConnection(account, with, sessionId); - mHandler.post(() -> { rtpConnection.get().rejectCall(); });