diff --git a/modules/UI/videolayout/VideoLayout.js b/modules/UI/videolayout/VideoLayout.js index 3cbbfebcc..a92885158 100644 --- a/modules/UI/videolayout/VideoLayout.js +++ b/modules/UI/videolayout/VideoLayout.js @@ -20,7 +20,6 @@ var remoteVideoTypes = {}; var localVideoThumbnail = null; var currentDominantSpeaker = null; -var lastNCount = config.channelLastN; var localLastNCount = config.channelLastN; var localLastNSet = []; var lastNEndpointsCache = []; @@ -96,6 +95,7 @@ var VideoLayout = { localVideoThumbnail = new LocalVideo(VideoLayout, emitter); emitter.addListener(UIEvents.CONTACT_CLICKED, onContactClicked); + this.lastNCount = config.channelLastN; }, initLargeVideo (isSideBarVisible) { @@ -114,9 +114,9 @@ var VideoLayout = { }, isInLastN (resource) { - return lastNCount < 0 || // lastN is disabled + return this.lastNCount < 0 || // lastN is disabled // lastNEndpoints cache not built yet - (lastNCount > 0 && !lastNEndpointsCache.length) || + (this.lastNCount > 0 && !lastNEndpointsCache.length) || (lastNEndpointsCache && lastNEndpointsCache.indexOf(resource) !== -1); }, @@ -268,7 +268,10 @@ var VideoLayout = { onRemoteStreamRemoved (stream) { let id = stream.getParticipantId(); - remoteVideos[id].removeRemoteStreamElement(stream); + let remoteVideo = remoteVideos[id]; + if (remoteVideo) { // remote stream may be removed after participant left the conference + remoteVideo.removeRemoteStreamElement(stream); + } }, /** @@ -524,8 +527,8 @@ var VideoLayout = { * endpoints */ onLastNEndpointsChanged (lastNEndpoints, endpointsEnteringLastN) { - if (lastNCount !== lastNEndpoints.length) - lastNCount = lastNEndpoints.length; + if (this.lastNCount !== lastNEndpoints.length) + this.lastNCount = lastNEndpoints.length; lastNEndpointsCache = lastNEndpoints; @@ -540,8 +543,8 @@ var VideoLayout = { // enters E's local LastN ejecting C. // Increase the local LastN set size, if necessary. - if (lastNCount > localLastNCount) { - localLastNCount = lastNCount; + if (this.lastNCount > localLastNCount) { + localLastNCount = this.lastNCount; } // Update the local LastN set preserving the order in which the