5454// ////////////////////////////////////////////////////////////////////////
5555LLPanelGroupBulkImpl::LLPanelGroupBulkImpl (const LLUUID& group_id) :
5656 mGroupID(group_id),
57- mBulkAgentList(NULL ),
58- mOKButton(NULL ),
57+ mBulkAgentList(nullptr ),
58+ mOKButton(nullptr ),
5959 mAddButton(nullptr ),
60- mRemoveButton(NULL ),
61- mGroupName(NULL ),
60+ mRemoveButton(nullptr ),
61+ mGroupName(nullptr ),
6262 mLoadingText(),
6363 mTooManySelected(),
64- mCloseCallback(NULL ),
65- mCloseCallbackUserData(NULL ),
66- mAvatarNameCacheConnection(),
67- mRoleNames(NULL ),
64+ mCloseCallback(nullptr ),
65+ mCloseCallbackUserData(nullptr ),
66+ mRoleNames(nullptr ),
6867 mOwnerWarning(),
6968 mAlreadyInGroup(),
7069 mConfirmedOwnerInvite(false ),
@@ -74,10 +73,13 @@ LLPanelGroupBulkImpl::LLPanelGroupBulkImpl(const LLUUID& group_id) :
7473
7574LLPanelGroupBulkImpl::~LLPanelGroupBulkImpl ()
7675{
77- if ( mAvatarNameCacheConnection . connected () )
76+ for ( auto & [id, connection] : mAvatarNameCacheConnections )
7877 {
79- mAvatarNameCacheConnection .disconnect ();
78+ if (connection.connected ())
79+ connection.disconnect ();
8080 }
81+
82+ mAvatarNameCacheConnections .clear ();
8183}
8284
8385void LLPanelGroupBulkImpl::callbackClickAdd (LLPanelGroupBulk* panelp)
@@ -124,43 +126,42 @@ void LLPanelGroupBulkImpl::callbackSelect(LLUICtrl* ctrl, void* userdata)
124126
125127void LLPanelGroupBulkImpl::addUsers (const uuid_vec_t & agent_ids)
126128{
127- std::vector<std::string> names;
128129 for (const LLUUID& agent_id : agent_ids)
129130 {
130- LLAvatarName av_name;
131- if (LLAvatarNameCache::get (agent_id, &av_name))
131+ if (LLAvatarName av_name; LLAvatarNameCache::get (agent_id, &av_name))
132132 {
133133 onAvatarNameCache (agent_id, av_name);
134134 }
135135 else
136136 {
137- if (mAvatarNameCacheConnection . connected ())
137+ if (auto found = mAvatarNameCacheConnections . find (agent_id); found != mAvatarNameCacheConnections . end ())
138138 {
139- mAvatarNameCacheConnection .disconnect ();
139+ if (found->second .connected ())
140+ found->second .disconnect ();
141+
142+ mAvatarNameCacheConnections .erase (found);
140143 }
141- // *TODO : Add a callback per avatar name being fetched.
142- mAvatarNameCacheConnection = LLAvatarNameCache::get (agent_id,
144+
145+ mAvatarNameCacheConnections . try_emplace (agent_id, LLAvatarNameCache::get (agent_id,
143146 [&](const LLUUID& agent_id, const LLAvatarName& av_name)
144147 {
145148 onAvatarNameCache (agent_id, av_name);
146- });
149+ })) ;
147150 }
148151 }
149152}
150153
151154void LLPanelGroupBulkImpl::onAvatarNameCache (const LLUUID& agent_id, const LLAvatarName& av_name)
152155{
153- if (mAvatarNameCacheConnection . connected ())
156+ if (auto found = mAvatarNameCacheConnections . find (agent_id); found != mAvatarNameCacheConnections . end ())
154157 {
155- mAvatarNameCacheConnection . disconnect ();
156- }
158+ if (found-> second . connected ())
159+ found-> second . disconnect ();
157160
158- std::vector<std::string> names;
159- uuid_vec_t agent_ids;
160- agent_ids.push_back (agent_id);
161- names.push_back (av_name.getCompleteName ());
161+ mAvatarNameCacheConnections .erase (found);
162+ }
162163
163- addUsers (names, agent_ids );
164+ addUsers ({ av_name. getCompleteName () }, { agent_id } );
164165}
165166
166167void LLPanelGroupBulkImpl::handleRemove ()
@@ -232,7 +233,7 @@ void LLPanelGroupBulkImpl::addUsers(const std::vector<std::string>& names, const
232233 }
233234}
234235
235- void LLPanelGroupBulkImpl::setGroupName (std::string name)
236+ void LLPanelGroupBulkImpl::setGroupName (const std::string& name)
236237{
237238 if (mGroupName )
238239 {
@@ -337,12 +338,7 @@ void LLPanelGroupBulk::updateGroupData()
337338
338339void LLPanelGroupBulk::addUserCallback (const LLUUID& id, const LLAvatarName& av_name)
339340{
340- std::vector<std::string> names;
341- uuid_vec_t agent_ids;
342- agent_ids.push_back (id);
343- names.push_back (av_name.getAccountName ());
344-
345- mImplementation ->addUsers (names, agent_ids);
341+ mImplementation ->addUsers ({ av_name.getAccountName () }, { id });
346342}
347343
348344void LLPanelGroupBulk::setCloseCallback (void (*close_callback)(void *), void* data)
0 commit comments