From 29d0574667c022737b888e8331370b1a092ce43f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Mon, 21 Nov 2022 21:49:17 +0100 Subject: [PATCH] Create ParticipantDisplayItem on media event if it does not exist yet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of creating a new ParticipantDisplayItem from scratch, which resets the full grid, now the existing one is updated; a new one is created only if no item existed already for the session and video stream type of the media event. Signed-off-by: Daniel Calviño Sánchez --- .../talk/activities/CallActivity.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 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 13d48c75b..c36fc553f 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java @@ -2225,17 +2225,10 @@ public class CallActivity extends CallBaseActivity { @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MediaStreamEvent mediaStreamEvent) { - if (mediaStreamEvent.getMediaStream() != null) { - boolean hasAtLeastOneVideoStream = mediaStreamEvent.getMediaStream().videoTracks != null - && mediaStreamEvent.getMediaStream().videoTracks.size() > 0; - - setupVideoStreamForLayout( - mediaStreamEvent.getMediaStream(), - mediaStreamEvent.getSession(), - null, - hasAtLeastOneVideoStream, - mediaStreamEvent.getVideoStreamType()); - } else { + String participantDisplayItemId = mediaStreamEvent.getSession() + "-" + mediaStreamEvent.getVideoStreamType(); + if (participantDisplayItems.get(participantDisplayItemId) == null) { + // Initial setup, ignore media related properties as they will be set after it. + // userId is unknown from the event, but it will be got based on the session id. setupVideoStreamForLayout( null, mediaStreamEvent.getSession(), @@ -2243,6 +2236,17 @@ public class CallActivity extends CallBaseActivity { false, mediaStreamEvent.getVideoStreamType()); } + + boolean hasAtLeastOneVideoStream = false; + if (mediaStreamEvent.getMediaStream() != null) { + hasAtLeastOneVideoStream = mediaStreamEvent.getMediaStream().videoTracks != null + && mediaStreamEvent.getMediaStream().videoTracks.size() > 0; + } + + ParticipantDisplayItem participantDisplayItem = participantDisplayItems.get(participantDisplayItemId); + participantDisplayItem.setMediaStream(mediaStreamEvent.getMediaStream()); + participantDisplayItem.setStreamEnabled(hasAtLeastOneVideoStream); + participantsAdapter.notifyDataSetChanged(); } @Override