diff options
Diffstat (limited to 'indra/newview/llgroupmgr.cpp')
-rw-r--r-- | indra/newview/llgroupmgr.cpp | 14 |
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); } |