UI cleanup.
-Added ui-local transformation matrix. -Gutted legacy commitcallbacks throughout ui widget ctors. -Created filter_editor ui widget which issues commit on keypress -search_editor commits on focus loss/enter press -search_editor and filter_editor now have a built in 'x' button to clear text. -LLComboBox::setPrearrangeCallback now uses boost::function -LLComboBox::setTextEntryCallback now uses boost::function -LLLineEditor::setKeystrokeCallback now uses boost::function -LLLineEditor::setPrevalidate now uses boost::function -LLPanel::childSetKeystrokeCallback removed -LLPanel::childSetPrevalidate removed -LLPanel::childSetActionTextbox now uses boost::function -LLTextBox::setClickedCallback now uses boost::function -LLTextEditor::setKeystrokeCallback added. -Cleaned up JCFloaterAreaSearch
This commit is contained in:
@@ -66,7 +66,7 @@
|
||||
#pragma warning(pop) // Restore all warnings to the previous state
|
||||
#endif
|
||||
|
||||
const U32 MAX_CACHED_GROUPS = 10;
|
||||
const U32 MAX_CACHED_GROUPS = 20;
|
||||
|
||||
//
|
||||
// LLRoleActionSet
|
||||
@@ -236,8 +236,15 @@ LLGroupMgrGroupData::LLGroupMgrGroupData(const LLUUID& id) :
|
||||
mRoleDataComplete(FALSE),
|
||||
mRoleMemberDataComplete(FALSE),
|
||||
mGroupPropertiesDataComplete(FALSE),
|
||||
mPendingRoleMemberRequest(FALSE)
|
||||
mPendingRoleMemberRequest(FALSE),
|
||||
mAccessTime(0.0f)
|
||||
{
|
||||
mMemberVersion.generate();
|
||||
}
|
||||
|
||||
void LLGroupMgrGroupData::setAccessed()
|
||||
{
|
||||
mAccessTime = (F32)LLFrameTimer::getTotalSeconds();
|
||||
}
|
||||
|
||||
BOOL LLGroupMgrGroupData::getRoleData(const LLUUID& role_id, LLRoleData& role_data)
|
||||
@@ -419,6 +426,7 @@ void LLGroupMgrGroupData::removeMemberData()
|
||||
}
|
||||
mMembers.clear();
|
||||
mMemberDataComplete = FALSE;
|
||||
mMemberVersion.generate();
|
||||
}
|
||||
|
||||
void LLGroupMgrGroupData::removeRoleData()
|
||||
@@ -947,7 +955,7 @@ void LLGroupMgr::processGroupMembersReply(LLMessageSystem* msg, void** data)
|
||||
LLUUID request_id;
|
||||
msg->getUUIDFast(_PREHASH_GroupData, _PREHASH_RequestID, request_id);
|
||||
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->createGroupData(group_id);
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
|
||||
if (!group_datap || (group_datap->mMemberRequestID != request_id))
|
||||
{
|
||||
llwarns << "processGroupMembersReply: Received incorrect (stale?) group or request id" << llendl;
|
||||
@@ -1017,6 +1025,8 @@ void LLGroupMgr::processGroupMembersReply(LLMessageSystem* msg, void** data)
|
||||
}
|
||||
}
|
||||
|
||||
group_datap->mMemberVersion.generate();
|
||||
|
||||
if (group_datap->mMembers.size() == (U32)group_datap->mMemberCount)
|
||||
{
|
||||
group_datap->mMemberDataComplete = TRUE;
|
||||
@@ -1118,7 +1128,7 @@ void LLGroupMgr::processGroupRoleDataReply(LLMessageSystem* msg, void** data)
|
||||
LLUUID request_id;
|
||||
msg->getUUIDFast(_PREHASH_GroupData, _PREHASH_RequestID, request_id);
|
||||
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->createGroupData(group_id);
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
|
||||
if (!group_datap || (group_datap->mRoleDataRequestID != request_id))
|
||||
{
|
||||
llwarns << "processGroupPropertiesReply: Received incorrect (stale?) group or request id" << llendl;
|
||||
@@ -1207,7 +1217,7 @@ void LLGroupMgr::processGroupRoleMembersReply(LLMessageSystem* msg, void** data)
|
||||
U32 total_pairs;
|
||||
msg->getU32(_PREHASH_AgentData, "TotalPairs", total_pairs);
|
||||
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->createGroupData(group_id);
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
|
||||
if (!group_datap || (group_datap->mRoleMembersRequestID != request_id))
|
||||
{
|
||||
llwarns << "processGroupRoleMembersReply: Received incorrect (stale?) group or request id" << llendl;
|
||||
@@ -1311,7 +1321,7 @@ void LLGroupMgr::processGroupTitlesReply(LLMessageSystem* msg, void** data)
|
||||
LLUUID request_id;
|
||||
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_RequestID, request_id);
|
||||
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->createGroupData(group_id);
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
|
||||
if (!group_datap || (group_datap->mTitlesRequestID != request_id))
|
||||
{
|
||||
llwarns << "processGroupTitlesReply: Received incorrect (stale?) group" << llendl;
|
||||
@@ -1443,7 +1453,7 @@ void LLGroupMgr::processCreateGroupReply(LLMessageSystem* msg, void ** data)
|
||||
|
||||
LLGroupMgrGroupData* LLGroupMgr::createGroupData(const LLUUID& id)
|
||||
{
|
||||
LLGroupMgrGroupData* group_datap;
|
||||
LLGroupMgrGroupData* group_datap = NULL;
|
||||
|
||||
group_map_t::iterator existing_group = LLGroupMgr::getInstance()->mGroups.find(id);
|
||||
if (existing_group == LLGroupMgr::getInstance()->mGroups.end())
|
||||
@@ -1456,6 +1466,11 @@ LLGroupMgrGroupData* LLGroupMgr::createGroupData(const LLUUID& id)
|
||||
group_datap = existing_group->second;
|
||||
}
|
||||
|
||||
if (group_datap)
|
||||
{
|
||||
group_datap->setAccessed();
|
||||
}
|
||||
|
||||
return group_datap;
|
||||
}
|
||||
|
||||
@@ -1496,25 +1511,41 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc)
|
||||
|
||||
void LLGroupMgr::addGroup(LLGroupMgrGroupData* group_datap)
|
||||
{
|
||||
if (mGroups.size() > MAX_CACHED_GROUPS)
|
||||
while (mGroups.size() >= MAX_CACHED_GROUPS)
|
||||
{
|
||||
// get rid of groups that aren't observed
|
||||
for (group_map_t::iterator gi = mGroups.begin(); gi != mGroups.end() && mGroups.size() > MAX_CACHED_GROUPS / 2; )
|
||||
// LRU: Remove the oldest un-observed group from cache until group size is small enough
|
||||
|
||||
F32 oldest_access = LLFrameTimer::getTotalSeconds();
|
||||
group_map_t::iterator oldest_gi = mGroups.end();
|
||||
|
||||
for (group_map_t::iterator gi = mGroups.begin(); gi != mGroups.end(); ++gi )
|
||||
{
|
||||
observer_multimap_t::iterator oi = mObservers.find(gi->first);
|
||||
if (oi == mObservers.end())
|
||||
{
|
||||
// not observed
|
||||
LLGroupMgrGroupData* unobserved_groupp = gi->second;
|
||||
delete unobserved_groupp;
|
||||
mGroups.erase(gi++);
|
||||
}
|
||||
else
|
||||
{
|
||||
++gi;
|
||||
if (gi->second
|
||||
&& (gi->second->getAccessTime() < oldest_access))
|
||||
{
|
||||
oldest_access = gi->second->getAccessTime();
|
||||
oldest_gi = gi;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (oldest_gi != mGroups.end())
|
||||
{
|
||||
delete oldest_gi->second;
|
||||
mGroups.erase(oldest_gi);
|
||||
}
|
||||
else
|
||||
{
|
||||
// All groups must be currently open, none to remove.
|
||||
// Just add the new group anyway, but get out of this loop as it
|
||||
// will never drop below max_cached_groups.
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
mGroups[group_datap->getID()] = group_datap;
|
||||
}
|
||||
|
||||
@@ -1886,6 +1917,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
|
||||
{
|
||||
gAgent.sendReliableMessage();
|
||||
}
|
||||
|
||||
group_datap->mMemberVersion.generate();
|
||||
}
|
||||
|
||||
|
||||
@@ -2047,8 +2080,10 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content)
|
||||
group_datap->mMembers[member_id] = data;
|
||||
}
|
||||
|
||||
group_datap->mMemberVersion.generate();
|
||||
|
||||
// Technically, we have this data, but to prevent completely overhauling
|
||||
// this entire system (it would be nice, but I don't have the time),
|
||||
// this entire system (it would be nice, but I don't have the time),
|
||||
// I'm going to be dumb and just call services I most likely don't need
|
||||
// with the thought being that the system might need it to be done.
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user