2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-08-31 22:46:10 +00:00

Correctly handle 'min' group call participant updates.

This commit is contained in:
John Preston
2021-02-01 16:25:38 +04:00
parent 5feb381cb2
commit 4e5c81dac2
4 changed files with 22 additions and 7 deletions

View File

@@ -276,17 +276,25 @@ void GroupCall::applyParticipantsSlice(
&& ((was ? was->speaking : false)
|| (!amInCall
&& (lastActive + speakingAfterActive > now)));
const auto defaultVolume = Calls::Group::kDefaultVolume;
const auto volume = (was && data.is_min())
? was->volume
: data.vvolume().value_or(Calls::Group::kDefaultVolume);
const auto mutedByMe = (was && data.is_min())
? was->mutedByMe
: data.is_muted_by_you();
const auto onlyMinLoaded = data.is_min()
&& (!was || was->onlyMinLoaded);
const auto value = Participant{
.user = user,
.date = data.vdate().v,
.lastActive = lastActive,
.ssrc = uint32(data.vsource().v),
.volume = data.vvolume().value_or(defaultVolume),
.volume = volume,
.speaking = canSelfUnmute && (was ? was->speaking : false),
.muted = data.is_muted(),
.mutedByMe = data.is_muted_by_you(),
.mutedByMe = mutedByMe,
.canSelfUnmute = canSelfUnmute,
.onlyMinLoaded = onlyMinLoaded,
};
if (i == end(_participants)) {
_userBySsrc.emplace(value.ssrc, user);
@@ -358,11 +366,13 @@ void GroupCall::applyActiveUpdate(
not_null{ userLoaded },
&Participant::user)
: _participants.end();
if (i == end(_participants)) {
const auto notFound = (i == end(_participants));
const auto loadByUserId = notFound || i->onlyMinLoaded;
if (loadByUserId) {
_unknownSpokenUids[userId] = when;
requestUnknownParticipants();
return;
} else if (!i->canSelfUnmute) {
}
if (notFound || !i->canSelfUnmute) {
return;
}
const auto was = std::make_optional(*i);