diff options
author | AndreyL ProductEngine <andreylproductengine@lindenlab.com> | 2015-06-04 18:25:28 +0300 |
---|---|---|
committer | AndreyL ProductEngine <andreylproductengine@lindenlab.com> | 2015-06-04 18:25:28 +0300 |
commit | adcd7030ea6de9be85fa738ca36171b5e23fff59 (patch) | |
tree | 59fddfa69e9b8fc716d578608b41296aad8a813b /indra/newview | |
parent | c62fc3e36e36934e9f5f9264b15188b9133f9875 (diff) |
MAINT-5240 FIXED Viewer will request the full group member list for group chat in some cases
Diffstat (limited to 'indra/newview')
-rwxr-xr-x | indra/newview/llspeakers.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 7867e1573c..bc92f2a416 100755 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -547,18 +547,17 @@ void LLSpeakerMgr::updateSpeakerList() // For groups, we need to hit the group manager. // Note: The session uuid and the group uuid are actually one and the same. If that was to change, this will fail. LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(session_id); - F32 large_group_delay = 0.f; - if (gdatap) - { - //This is a viewer-side bandaid for maint-4414 it does not fix the core issue. - large_group_delay = (F32)(gdatap->mMemberCount / 5000); - } - - const F32 load_group_timeout = gSavedSettings.getF32("ChatLoadGroupTimeout") + large_group_delay; - - if (!gdatap && (mGetListTime.getElapsedTimeF32() >= load_group_timeout)) + + if (!gdatap || !gdatap->isGroupPropertiesDataComplete()) + { + // Request group properties first. This is to avoid fetching lagre member lists here. See MAINT-5240 + LLGroupMgr::getInstance()->sendGroupPropertiesRequest(session_id); + } + else if (gdatap && gdatap->isGroupPropertiesDataComplete() + && !gdatap->isMemberDataComplete() && gdatap->mMemberCount < 5000 + && mGetListTime.getElapsedTimeF32() >= gSavedSettings.getF32("ChatLoadGroupTimeout")) { - // Request the data the first time around + // Request the member list data the first time around LLGroupMgr::getInstance()->sendCapGroupMembersRequest(session_id); } else if (gdatap && gdatap->isMemberDataComplete() && !gdatap->mMembers.empty()) |