summaryrefslogtreecommitdiff
path: root/indra/newview/llgroupmgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llgroupmgr.cpp')
-rw-r--r--indra/newview/llgroupmgr.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index 5e50fad008..0626a5c3d3 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -50,7 +50,6 @@
#include "llstatusbar.h"
#include "lleconomy.h"
#include "llviewerwindow.h"
-#include "llfloaterdirectory.h"
#include "llpanelgroup.h"
#include "llgroupactions.h"
#include "lluictrlfactory.h"
@@ -1232,8 +1231,6 @@ void LLGroupMgr::processJoinGroupReply(LLMessageSystem* msg, void ** data)
LLGroupMgr::getInstance()->clearGroupData(group_id);
// refresh the floater for this group, if any.
LLGroupActions::refresh(group_id);
- // refresh the group panel of the search window, if necessary.
- LLFloaterDirectory::refreshGroup(group_id);
}
}
@@ -1254,8 +1251,6 @@ void LLGroupMgr::processLeaveGroupReply(LLMessageSystem* msg, void ** data)
LLGroupMgr::getInstance()->clearGroupData(group_id);
// close the floater for this group, if any.
LLGroupActions::closeGroup(group_id);
- // refresh the group panel of the search window, if necessary.
- LLFloaterDirectory::refreshGroup(group_id);
}
}
@@ -1325,11 +1320,16 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc)
{
for (group_map_t::iterator gi = mGroups.begin(); gi != mGroups.end(); ++gi)
{
+ LLUUID group_id = gi->first;
if (gi->second->mChanged)
{
+ // Copy the map because observers may remove themselves on update
+ observer_multimap_t observers = mObservers;
+
// find all observers for this group id
- observer_multimap_t::iterator oi = mObservers.find(gi->first);
- for (; oi != mObservers.end(); ++oi)
+ observer_multimap_t::iterator oi = observers.lower_bound(group_id);
+ observer_multimap_t::iterator end = observers.upper_bound(group_id);
+ for (; oi != end; ++oi)
{
oi->second->changed(gc);
}