ConnectionService: initialize rtpConnection for incoming calls

Removes the need for repetitve findJingleRtpConnection() calls for
onAnswer() and onReject()
This commit is contained in:
Peter Cai 2022-03-12 21:50:23 -05:00
parent 1f2420b38b
commit a50b50938e

View file

@ -117,7 +117,7 @@ public class ConnectionService extends android.telecom.ConnectionService {
Account account = xmppConnectionService.findAccountByJid(Jid.of(gateway[0])); Account account = xmppConnectionService.findAccountByJid(Jid.of(gateway[0]));
Jid with = Jid.ofLocalAndDomain(tel, gateway[1]); 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 permissionManager = PermissionManager.getInstance(this);
permissionManager.setNotificationSettings( permissionManager.setNotificationSettings(
@ -167,7 +167,10 @@ public class ConnectionService extends android.telecom.ConnectionService {
Account account = xmppConnectionService.findAccountByJid(Jid.of(accountJid)); Account account = xmppConnectionService.findAccountByJid(Jid.of(accountJid));
Jid with = Jid.of(withJid); 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.setSessionId(sessionId);
connection.setAddress( connection.setAddress(
Uri.fromParts("tel", with.getLocal(), null), Uri.fromParts("tel", with.getLocal(), null),
@ -186,12 +189,13 @@ public class ConnectionService extends android.telecom.ConnectionService {
protected String sessionId = null; protected String sessionId = null;
protected Stack<String> postDial = new Stack<>(); protected Stack<String> postDial = new Stack<>();
protected Icon gatewayIcon; protected Icon gatewayIcon;
protected WeakReference<JingleRtpConnection> rtpConnection = null; protected WeakReference<JingleRtpConnection> rtpConnection;
CheogramConnection(Account account, Jid with, String postDialString) { CheogramConnection(Account account, Jid with, String postDialString, WeakReference<JingleRtpConnection> rtpConnection) {
super(); super();
this.account = account; this.account = account;
this.with = with; this.with = with;
this.rtpConnection = rtpConnection;
gatewayIcon = Icon.createWithBitmap(xmppConnectionService.getAvatarService().get( gatewayIcon = Icon.createWithBitmap(xmppConnectionService.getAvatarService().get(
account.getRoster().getContact(Jid.of(with.getDomain())), account.getRoster().getContact(Jid.of(with.getDomain())),
@ -271,10 +275,6 @@ public class ConnectionService extends android.telecom.ConnectionService {
@Override @Override
public void onAnswer() { 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(() -> { mHandler.post(() -> {
rtpConnection.get().acceptCall(); rtpConnection.get().acceptCall();
}); });
@ -282,8 +282,6 @@ public class ConnectionService extends android.telecom.ConnectionService {
@Override @Override
public void onReject() { public void onReject() {
this.rtpConnection = xmppConnectionService.getJingleConnectionManager().findJingleRtpConnection(account, with, sessionId);
mHandler.post(() -> { mHandler.post(() -> {
rtpConnection.get().rejectCall(); rtpConnection.get().rejectCall();
}); });