diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index bc4f14128..5809b334d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -800,7 +800,7 @@ public class CallController extends BaseController { } } else { for (int i = 0; i < magicPeerConnectionWrapperList.size(); i++) { - if (magicPeerConnectionWrapperList.get(i).getSessionId().equals(callSession)) { + if (magicPeerConnectionWrapperList.get(i).getSessionId().equals(webSocketClient.getSessionId())) { magicPeerConnectionWrapperList.get(i).sendChannelData(new DataChannelMessage(message)); break; @@ -1280,7 +1280,7 @@ public class CallController extends BaseController { magicPeerConnectionWrapper.setNick(ncSignalingMessage.getPayload().getNick()); SessionDescription sessionDescriptionWithPreferredCodec; - if (magicPeerConnectionWrapper.hasMediaStream() ) { + if (magicPeerConnectionWrapper.hasMediaStream()) { String sessionDescriptionStringWithPreferredCodec = MagicWebRTCUtils.preferCodec (ncSignalingMessage.getPayload().getSdp(), "VP8", false); @@ -1480,7 +1480,7 @@ public class CallController extends BaseController { return; } - if (newSessions.size() > 0) { + if (newSessions.size() > 0 && !hasMCU) { getPeersForCall(); } diff --git a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java index 4a8f2f1d0..8b999a73c 100644 --- a/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java +++ b/app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java @@ -72,6 +72,7 @@ public class MagicPeerConnectionWrapper { private boolean hasInitiated; private MediaStream localMediaStream; + private boolean isMCUPublisher; public MagicPeerConnectionWrapper(PeerConnectionFactory peerConnectionFactory, List iceServerList, @@ -86,6 +87,7 @@ public class MagicPeerConnectionWrapper { magicSdpObserver = new MagicSdpObserver(); hasInitiated = sessionId.compareTo(localSession) < 0; + this.isMCUPublisher = isMCUPublisher; peerConnection = peerConnectionFactory.createPeerConnection(iceServerList, mediaConstraints, new MagicPeerConnectionObserver()); @@ -266,7 +268,9 @@ public class MagicPeerConnectionWrapper { if (iceConnectionState.equals(PeerConnection.IceConnectionState.CONNECTED)) { /*EventBus.getDefault().post(new PeerConnectionEvent(PeerConnectionEvent.PeerConnectionEventType .PEER_CONNECTED, sessionId, null, null));*/ - EventBus.getDefault().post(new MediaStreamEvent(remoteMediaStream, sessionId)); + if (!isMCUPublisher) { + EventBus.getDefault().post(new MediaStreamEvent(remoteMediaStream, sessionId)); + } if (hasInitiated) { sendInitialMediaStatus(); @@ -309,7 +313,9 @@ public class MagicPeerConnectionWrapper { @Override public void onRemoveStream(MediaStream mediaStream) { - EventBus.getDefault().post(new MediaStreamEvent(null, sessionId)); + if (!isMCUPublisher) { + EventBus.getDefault().post(new MediaStreamEvent(null, sessionId)); + } } @Override