diff --git a/conference.js b/conference.js index cc6108e10..be3c1884c 100644 --- a/conference.js +++ b/conference.js @@ -557,6 +557,9 @@ export default { this.useAudioStream(track); } else if (track.isVideoTrack()) { this.useVideoStream(track); + } else { + console.error( + "Ignored not an audio nor a video track: ", track); } }); roomLocker = createRoomLocker(room); diff --git a/modules/UI/videolayout/LargeVideo.js b/modules/UI/videolayout/LargeVideo.js index dc4ed19cf..351a2b0f3 100644 --- a/modules/UI/videolayout/LargeVideo.js +++ b/modules/UI/videolayout/LargeVideo.js @@ -446,7 +446,15 @@ export default class LargeVideoManager { let container = this.getContainer(this.state); - container.hide().then(() => { + // Include hide()/fadeOut only if we're switching between users + let preUpdate; + if (this.newStreamData.id != this.id) { + preUpdate = container.hide(); + } else { + preUpdate = Promise.resolve(); + } + + preUpdate.then(() => { let {id, stream, videoType, resolve} = this.newStreamData; this.newStreamData = null; diff --git a/modules/UI/videolayout/VideoLayout.js b/modules/UI/videolayout/VideoLayout.js index 5460633e6..b6d48276d 100644 --- a/modules/UI/videolayout/VideoLayout.js +++ b/modules/UI/videolayout/VideoLayout.js @@ -410,7 +410,11 @@ var VideoLayout = { this.isLargeContainerTypeVisible(VIDEO_CONTAINER_TYPE)) || pinnedId === resourceJid || (!pinnedId && resourceJid && - currentDominantSpeaker === resourceJid)) { + currentDominantSpeaker === resourceJid) || + /* Playback started while we're on the stage - may need to update + video source with the new stream */ + this.isCurrentlyOnLarge(resourceJid)) { + this.updateLargeVideo(resourceJid, true); } },