Add and remove nick provider listeners based on the peer connections

Although the OfferNickProvider itself is still added and removed based
on the call participant the listeners for the video and screen
connections are now added and removed based on the actual peer
connections that they listen to.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
Daniel Calviño Sánchez 2022-11-30 10:08:43 +01:00
parent a87f2fb102
commit 7b619e5ae9

View File

@ -2013,6 +2013,17 @@ public class CallActivity extends CallBaseActivity {
} else { } else {
callParticipant.setPeerConnectionWrapper(peerConnectionWrapper); callParticipant.setPeerConnectionWrapper(peerConnectionWrapper);
} }
if (!hasExternalSignalingServer) {
OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.get(sessionId);
if ("screen".equals(type)) {
signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(),
sessionId, "screen");
} else {
signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(),
sessionId, "video");
}
}
} }
if (publisher) { if (publisher) {
@ -2037,8 +2048,6 @@ public class CallActivity extends CallBaseActivity {
if (!hasExternalSignalingServer) { if (!hasExternalSignalingServer) {
OfferAnswerNickProvider offerAnswerNickProvider = new OfferAnswerNickProvider(sessionId); OfferAnswerNickProvider offerAnswerNickProvider = new OfferAnswerNickProvider(sessionId);
offerAnswerNickProviders.put(sessionId, offerAnswerNickProvider); offerAnswerNickProviders.put(sessionId, offerAnswerNickProvider);
signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(), sessionId, "video");
signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(), sessionId, "screen");
} }
final CallParticipantModel callParticipantModel = callParticipant.getCallParticipantModel(); final CallParticipantModel callParticipantModel = callParticipant.getCallParticipantModel();
@ -2074,6 +2083,15 @@ public class CallActivity extends CallBaseActivity {
} }
} }
if (!hasExternalSignalingServer) {
OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.get(sessionId);
if ("screen".equals(type)) {
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
} else {
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
}
}
peerConnectionWrapper.removePeerConnection(); peerConnectionWrapper.removePeerConnection();
peerConnectionWrapperList.remove(peerConnectionWrapper); peerConnectionWrapperList.remove(peerConnectionWrapper);
} }
@ -2093,11 +2111,7 @@ public class CallActivity extends CallBaseActivity {
SignalingMessageReceiver.CallParticipantMessageListener listener = callParticipantMessageListeners.remove(sessionId); SignalingMessageReceiver.CallParticipantMessageListener listener = callParticipantMessageListeners.remove(sessionId);
signalingMessageReceiver.removeListener(listener); signalingMessageReceiver.removeListener(listener);
OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.remove(sessionId); offerAnswerNickProviders.remove(sessionId);
if (offerAnswerNickProvider != null) {
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
}
runOnUiThread(() -> removeParticipantDisplayItem(sessionId, "video")); runOnUiThread(() -> removeParticipantDisplayItem(sessionId, "video"));
} }