mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-11 06:44:09 +01:00
Create and destroy helper listeners based on call participants
The listeners for call participant messages and for the call participant nick provided by offers / answers were created and destroyed based on the peer connections, although they were implicitly associated to a call participant. Now they are explicitly created and destroyed based on its associated call participant. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
parent
175944e932
commit
5681084a14
@ -1966,22 +1966,6 @@ public class CallActivity extends CallBaseActivity {
|
|||||||
|
|
||||||
peerConnectionWrapperList.add(peerConnectionWrapper);
|
peerConnectionWrapperList.add(peerConnectionWrapper);
|
||||||
|
|
||||||
// Currently there is no separation between call participants and peer connections, so any video peer
|
|
||||||
// connection (except the own publisher connection) is treated as a call participant.
|
|
||||||
if (!publisher && "video".equals(type)) {
|
|
||||||
SignalingMessageReceiver.CallParticipantMessageListener callParticipantMessageListener =
|
|
||||||
new CallActivityCallParticipantMessageListener(sessionId);
|
|
||||||
callParticipantMessageListeners.put(sessionId, callParticipantMessageListener);
|
|
||||||
signalingMessageReceiver.addListener(callParticipantMessageListener, sessionId);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!publisher && !hasExternalSignalingServer && offerAnswerNickProviders.get(sessionId) == null) {
|
|
||||||
OfferAnswerNickProvider offerAnswerNickProvider = new OfferAnswerNickProvider(sessionId);
|
|
||||||
offerAnswerNickProviders.put(sessionId, offerAnswerNickProvider);
|
|
||||||
signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(), sessionId, "video");
|
|
||||||
signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(), sessionId, "screen");
|
|
||||||
}
|
|
||||||
|
|
||||||
PeerConnectionWrapper.PeerConnectionObserver peerConnectionObserver =
|
PeerConnectionWrapper.PeerConnectionObserver peerConnectionObserver =
|
||||||
new CallActivityPeerConnectionObserver(sessionId, type);
|
new CallActivityPeerConnectionObserver(sessionId, type);
|
||||||
peerConnectionObservers.put(sessionId + "-" + type, peerConnectionObserver);
|
peerConnectionObservers.put(sessionId + "-" + type, peerConnectionObserver);
|
||||||
@ -1992,6 +1976,18 @@ public class CallActivity extends CallBaseActivity {
|
|||||||
if (callParticipant == null) {
|
if (callParticipant == null) {
|
||||||
callParticipant = new CallParticipant(sessionId);
|
callParticipant = new CallParticipant(sessionId);
|
||||||
callParticipants.put(sessionId, callParticipant);
|
callParticipants.put(sessionId, callParticipant);
|
||||||
|
|
||||||
|
SignalingMessageReceiver.CallParticipantMessageListener callParticipantMessageListener =
|
||||||
|
new CallActivityCallParticipantMessageListener(sessionId);
|
||||||
|
callParticipantMessageListeners.put(sessionId, callParticipantMessageListener);
|
||||||
|
signalingMessageReceiver.addListener(callParticipantMessageListener, sessionId);
|
||||||
|
|
||||||
|
if (!hasExternalSignalingServer) {
|
||||||
|
OfferAnswerNickProvider offerAnswerNickProvider = new OfferAnswerNickProvider(sessionId);
|
||||||
|
offerAnswerNickProviders.put(sessionId, offerAnswerNickProvider);
|
||||||
|
signalingMessageReceiver.addListener(offerAnswerNickProvider.getVideoWebRtcMessageListener(), sessionId, "video");
|
||||||
|
signalingMessageReceiver.addListener(offerAnswerNickProvider.getScreenWebRtcMessageListener(), sessionId, "screen");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("screen".equals(type)) {
|
if ("screen".equals(type)) {
|
||||||
@ -2054,18 +2050,18 @@ public class CallActivity extends CallBaseActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!justScreen) {
|
if (!justScreen) {
|
||||||
SignalingMessageReceiver.CallParticipantMessageListener listener = callParticipantMessageListeners.remove(sessionId);
|
|
||||||
signalingMessageReceiver.removeListener(listener);
|
|
||||||
|
|
||||||
OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.remove(sessionId);
|
|
||||||
if (offerAnswerNickProvider != null) {
|
|
||||||
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
|
|
||||||
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
|
|
||||||
}
|
|
||||||
|
|
||||||
CallParticipant callParticipant = callParticipants.remove(sessionId);
|
CallParticipant callParticipant = callParticipants.remove(sessionId);
|
||||||
if (callParticipant != null) {
|
if (callParticipant != null) {
|
||||||
callParticipant.destroy();
|
callParticipant.destroy();
|
||||||
|
|
||||||
|
SignalingMessageReceiver.CallParticipantMessageListener listener = callParticipantMessageListeners.remove(sessionId);
|
||||||
|
signalingMessageReceiver.removeListener(listener);
|
||||||
|
|
||||||
|
OfferAnswerNickProvider offerAnswerNickProvider = offerAnswerNickProviders.remove(sessionId);
|
||||||
|
if (offerAnswerNickProvider != null) {
|
||||||
|
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getVideoWebRtcMessageListener());
|
||||||
|
signalingMessageReceiver.removeListener(offerAnswerNickProvider.getScreenWebRtcMessageListener());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user