Browse Source

Fix ParticipantDisplayItems not updated on events

The ParticipantDisplayItems were associated to both the session ID and
the video stream type ("video" or "screen"), but the code that gets them
was not updated to include the video stream type in the key.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Daniel Calviño Sánchez 2 years ago
parent
commit
45224741fd
1 changed files with 11 additions and 10 deletions
  1. 11 10
      app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

+ 11 - 10
app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

@@ -2164,21 +2164,22 @@ public class CallActivity extends CallBaseActivity {
     @Subscribe(threadMode = ThreadMode.MAIN)
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onMessageEvent(PeerConnectionEvent peerConnectionEvent) {
     public void onMessageEvent(PeerConnectionEvent peerConnectionEvent) {
         String sessionId = peerConnectionEvent.getSessionId();
         String sessionId = peerConnectionEvent.getSessionId();
+        String participantDisplayItemId = sessionId + "-" + peerConnectionEvent.getVideoStreamType();
 
 
         if (peerConnectionEvent.getPeerConnectionEventType() ==
         if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.PEER_CONNECTED) {
             PeerConnectionEvent.PeerConnectionEventType.PEER_CONNECTED) {
             if (webSocketClient != null && webSocketClient.getSessionId() != null && webSocketClient.getSessionId().equals(sessionId)) {
             if (webSocketClient != null && webSocketClient.getSessionId() != null && webSocketClient.getSessionId().equals(sessionId)) {
                 updateSelfVideoViewConnected(true);
                 updateSelfVideoViewConnected(true);
-            } else if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setConnected(true);
+            } else if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setConnected(true);
                 participantsAdapter.notifyDataSetChanged();
                 participantsAdapter.notifyDataSetChanged();
             }
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED) {
             PeerConnectionEvent.PeerConnectionEventType.PEER_DISCONNECTED) {
             if (webSocketClient != null && webSocketClient.getSessionId() != null && webSocketClient.getSessionId().equals(sessionId)) {
             if (webSocketClient != null && webSocketClient.getSessionId() != null && webSocketClient.getSessionId().equals(sessionId)) {
                 updateSelfVideoViewConnected(false);
                 updateSelfVideoViewConnected(false);
-            } else if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setConnected(false);
+            } else if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setConnected(false);
                 participantsAdapter.notifyDataSetChanged();
                 participantsAdapter.notifyDataSetChanged();
             }
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
@@ -2200,20 +2201,20 @@ public class CallActivity extends CallBaseActivity {
             }
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.NICK_CHANGE) {
             PeerConnectionEvent.PeerConnectionEventType.NICK_CHANGE) {
-            if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setNick(peerConnectionEvent.getNick());
+            if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setNick(peerConnectionEvent.getNick());
                 participantsAdapter.notifyDataSetChanged();
                 participantsAdapter.notifyDataSetChanged();
             }
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.VIDEO_CHANGE && !isVoiceOnlyCall) {
             PeerConnectionEvent.PeerConnectionEventType.VIDEO_CHANGE && !isVoiceOnlyCall) {
-            if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setStreamEnabled(peerConnectionEvent.getChangeValue());
+            if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setStreamEnabled(peerConnectionEvent.getChangeValue());
                 participantsAdapter.notifyDataSetChanged();
                 participantsAdapter.notifyDataSetChanged();
             }
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
             PeerConnectionEvent.PeerConnectionEventType.AUDIO_CHANGE) {
             PeerConnectionEvent.PeerConnectionEventType.AUDIO_CHANGE) {
-            if (participantDisplayItems.get(sessionId) != null) {
-                participantDisplayItems.get(sessionId).setAudioEnabled(peerConnectionEvent.getChangeValue());
+            if (participantDisplayItems.get(participantDisplayItemId) != null) {
+                participantDisplayItems.get(participantDisplayItemId).setAudioEnabled(peerConnectionEvent.getChangeValue());
                 participantsAdapter.notifyDataSetChanged();
                 participantsAdapter.notifyDataSetChanged();
             }
             }
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==
         } else if (peerConnectionEvent.getPeerConnectionEventType() ==