diff --git a/td/telegram/GroupCallManager.cpp b/td/telegram/GroupCallManager.cpp index cc46ce948..ad09a2bbf 100644 --- a/td/telegram/GroupCallManager.cpp +++ b/td/telegram/GroupCallManager.cpp @@ -755,23 +755,23 @@ void GroupCallManager::on_update_group_call_participants( } pending_updates = std::move(participants); - process_pending_group_call_participants_updates(input_group_call_id); + process_pending_group_call_participant_updates(input_group_call_id); } -void GroupCallManager::process_pending_group_call_participants_updates(InputGroupCallId input_group_call_id) { +bool GroupCallManager::process_pending_group_call_participant_updates(InputGroupCallId input_group_call_id) { if (!need_group_call_participants(input_group_call_id)) { - return; + return false; } auto participants_it = group_call_participants_.find(input_group_call_id); if (participants_it == group_call_participants_.end()) { - return; + return false; } auto &pending_updates = participants_it->second->pending_updates_; auto group_call = get_group_call(input_group_call_id); CHECK(group_call != nullptr && group_call->is_inited); if (group_call->version == -1) { - return; + return false; } int32 diff = 0; @@ -816,7 +816,9 @@ void GroupCallManager::process_pending_group_call_participants_updates(InputGrou group_call->participant_count = 0; } send_update_group_call(group_call); + return true; } + return false; } void GroupCallManager::sync_group_call_participants(InputGroupCallId input_group_call_id) { @@ -1441,6 +1443,9 @@ InputGroupCallId GroupCallManager::update_group_call(const tl_object_ptrversion = call.version; + if (process_pending_group_call_participant_updates(input_group_call_id)) { + need_update = false; + } } } if (group_call->channel_id.is_valid()) { diff --git a/td/telegram/GroupCallManager.h b/td/telegram/GroupCallManager.h index 102c71cc6..ff394cbbf 100644 --- a/td/telegram/GroupCallManager.h +++ b/td/telegram/GroupCallManager.h @@ -117,7 +117,7 @@ class GroupCallManager : public Actor { bool need_group_call_participants(InputGroupCallId input_group_call_id) const; - void process_pending_group_call_participants_updates(InputGroupCallId input_group_call_id); + bool process_pending_group_call_participant_updates(InputGroupCallId input_group_call_id); void sync_group_call_participants(InputGroupCallId input_group_call_id);