From fcbfc1926d7b8924c21d053c2467b90f8cd39956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Tue, 22 Nov 2022 13:54:19 +0100 Subject: [PATCH] Post MediaStreamEvents for each connection state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rather than simplifying the states to "CONNECTED" and "DISCONNECTED" now the raw state is posted, and the handler then decides how to treat them (which, for now, is exactly as before). Signed-off-by: Daniel Calviño Sánchez --- .../nextcloud/talk/activities/CallActivity.java | 12 ++++++++++-- .../nextcloud/talk/events/PeerConnectionEvent.java | 2 +- .../talk/webrtc/PeerConnectionWrapper.java | 14 ++++++++------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java index 9f3604af2..8d25ebd80 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java @@ -2119,10 +2119,16 @@ public class CallActivity extends CallBaseActivity { String sessionId = peerConnectionEvent.getSessionId(); if (peerConnectionEvent.getPeerConnectionEventType() == - PeerConnectionEvent.PeerConnectionEventType.PEER_CONNECTED) { + PeerConnectionEvent.PeerConnectionEventType.PEER_CONNECTED || + peerConnectionEvent.getPeerConnectionEventType() == + PeerConnectionEvent.PeerConnectionEventType.PEER_COMPLETED) { handlePeerConnected(sessionId, peerConnectionEvent.getVideoStreamType()); } else if (peerConnectionEvent.getPeerConnectionEventType() == - PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED) { + PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED || + peerConnectionEvent.getPeerConnectionEventType() == + PeerConnectionEvent.PeerConnectionEventType.PEER_NEW || + peerConnectionEvent.getPeerConnectionEventType() == + PeerConnectionEvent.PeerConnectionEventType.PEER_CHECKING) { handlePeerDisconnected(sessionId, peerConnectionEvent.getVideoStreamType()); } else if (peerConnectionEvent.getPeerConnectionEventType() == PeerConnectionEvent.PeerConnectionEventType.PEER_CLOSED) { @@ -2147,6 +2153,8 @@ public class CallActivity extends CallBaseActivity { setCallState(CallStatus.PUBLISHER_FAILED); webSocketClient.clearResumeId(); hangup(false); + } else { + handlePeerDisconnected(sessionId, peerConnectionEvent.getVideoStreamType()); } } } diff --git a/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java b/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java index e83385ac4..28ff31ab3 100644 --- a/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java +++ b/app/src/main/java/com/nextcloud/talk/events/PeerConnectionEvent.java @@ -120,6 +120,6 @@ public class PeerConnectionEvent { } public enum PeerConnectionEventType { - PEER_CONNECTED, PEER_DISCONNECTED, PEER_FAILED, PEER_CLOSED, SENSOR_FAR, SENSOR_NEAR + PEER_NEW, PEER_CHECKING, PEER_CONNECTED, PEER_COMPLETED, PEER_DISCONNECTED, PEER_FAILED, PEER_CLOSED, SENSOR_FAR, SENSOR_NEAR } } diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java b/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java index bcf3773d6..5c9eac672 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java +++ b/app/src/main/java/com/nextcloud/talk/webrtc/PeerConnectionWrapper.java @@ -419,19 +419,21 @@ public class PeerConnectionWrapper { sendInitialMediaStatus(); } } else if (iceConnectionState == PeerConnection.IceConnectionState.COMPLETED) { - EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_CONNECTED, + EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_COMPLETED, sessionId, null, null, videoStreamType)); } else if (iceConnectionState == PeerConnection.IceConnectionState.CLOSED) { EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType .PEER_CLOSED, sessionId, null, null, videoStreamType)); - } else if (iceConnectionState == PeerConnection.IceConnectionState.DISCONNECTED || - iceConnectionState == PeerConnection.IceConnectionState.NEW || - iceConnectionState == PeerConnection.IceConnectionState.CHECKING) { + } else if (iceConnectionState == PeerConnection.IceConnectionState.DISCONNECTED) { EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED, sessionId, null, null, videoStreamType)); + } else if (iceConnectionState == PeerConnection.IceConnectionState.NEW) { + EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_NEW, + sessionId, null, null, videoStreamType)); + } else if (iceConnectionState == PeerConnection.IceConnectionState.CHECKING) { + EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_CHECKING, + sessionId, null, null, videoStreamType)); } else if (iceConnectionState == PeerConnection.IceConnectionState.FAILED) { - EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED, - sessionId, null, null, videoStreamType)); EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType.PEER_FAILED, sessionId, null, null, videoStreamType)); }