mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-23 13:40:43 +01:00
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:
parent
a87f2fb102
commit
7b619e5ae9
@ -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"));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user