summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAndreyL ProductEngine <andreylproductengine@lindenlab.com>2015-06-04 18:25:28 +0300
committerAndreyL ProductEngine <andreylproductengine@lindenlab.com>2015-06-04 18:25:28 +0300
commitadcd7030ea6de9be85fa738ca36171b5e23fff59 (patch)
tree59fddfa69e9b8fc716d578608b41296aad8a813b /indra
parentc62fc3e36e36934e9f5f9264b15188b9133f9875 (diff)
MAINT-5240 FIXED Viewer will request the full group member list for group chat in some cases
Diffstat (limited to 'indra')
-rwxr-xr-xindra/newview/llspeakers.cpp21
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())