mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-05-16 10:27:46 +00:00
fix(remote-sources): update only when neccessary
Updates the remoteVideoSources set only when neccessary when participant is leaving . This fixes an endless recursion when visitor is promoted or left and there is a screen sharing.
This commit is contained in:
@@ -374,23 +374,6 @@ ReducerRegistry.register<IParticipantsState>('features/base/participants',
|
||||
let oldParticipant = remote.get(id);
|
||||
let isLocalScreenShare = false;
|
||||
|
||||
if (oldParticipant?.sources?.size) {
|
||||
const videoSources: Map<string, ISourceInfo> | undefined = oldParticipant.sources.get(MEDIA_TYPE.VIDEO);
|
||||
const newRemoteVideoSources = new Set(state.remoteVideoSources);
|
||||
|
||||
if (videoSources?.size) {
|
||||
for (const source of videoSources.keys()) {
|
||||
newRemoteVideoSources.delete(source);
|
||||
}
|
||||
}
|
||||
state.remoteVideoSources = newRemoteVideoSources;
|
||||
} else if (oldParticipant?.fakeParticipant === FakeParticipant.RemoteScreenShare) {
|
||||
const newRemoteVideoSources = new Set(state.remoteVideoSources);
|
||||
|
||||
newRemoteVideoSources.delete(id);
|
||||
state.remoteVideoSources = newRemoteVideoSources;
|
||||
}
|
||||
|
||||
if (oldParticipant && oldParticipant.conference === conference) {
|
||||
remote.delete(id);
|
||||
} else if (local?.id === id) {
|
||||
@@ -405,6 +388,26 @@ ReducerRegistry.register<IParticipantsState>('features/base/participants',
|
||||
return state;
|
||||
}
|
||||
|
||||
if (oldParticipant?.sources?.size) {
|
||||
const videoSources: Map<string, ISourceInfo> | undefined = oldParticipant.sources.get(MEDIA_TYPE.VIDEO);
|
||||
|
||||
if (videoSources?.size) {
|
||||
const newRemoteVideoSources = new Set(state.remoteVideoSources);
|
||||
|
||||
for (const source of videoSources.keys()) {
|
||||
newRemoteVideoSources.delete(source);
|
||||
}
|
||||
|
||||
state.remoteVideoSources = newRemoteVideoSources;
|
||||
}
|
||||
} else if (oldParticipant?.fakeParticipant === FakeParticipant.RemoteScreenShare) {
|
||||
const newRemoteVideoSources = new Set(state.remoteVideoSources);
|
||||
|
||||
if (newRemoteVideoSources.delete(id)) {
|
||||
state.remoteVideoSources = newRemoteVideoSources;
|
||||
}
|
||||
}
|
||||
|
||||
state.sortedRemoteParticipants.delete(id);
|
||||
state.raisedHandsQueue = state.raisedHandsQueue.filter(pid => pid.id !== id);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user