From a5dcfd464795c0bcb256c07019658b6bfe633b10 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Thu, 20 Mar 2014 12:40:23 +0100 Subject: [PATCH] Sound Explorer: Add correct name to blacklist --- indra/newview/NACLfloaterexploresounds.cpp | 40 ++++++++++++++++++---- indra/newview/NACLfloaterexploresounds.h | 6 ++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/indra/newview/NACLfloaterexploresounds.cpp b/indra/newview/NACLfloaterexploresounds.cpp index cbb560e4ac..9a60ee882d 100644 --- a/indra/newview/NACLfloaterexploresounds.cpp +++ b/indra/newview/NACLfloaterexploresounds.cpp @@ -55,6 +55,14 @@ NACLFloaterExploreSounds::NACLFloaterExploreSounds(const LLSD& key) NACLFloaterExploreSounds::~NACLFloaterExploreSounds() { + for (blacklist_avatar_name_cache_connection_map_t::iterator it = mBlacklistAvatarNameCacheConnections.begin(); it != mBlacklistAvatarNameCacheConnections.end(); ++it) + { + if (it->second.connected()) + { + it->second.disconnect(); + } + } + mBlacklistAvatarNameCacheConnections.clear(); } BOOL NACLFloaterExploreSounds::postBuild() @@ -393,18 +401,38 @@ void NACLFloaterExploreSounds::blacklistSound() continue; } - std::string entry_name; - std::string agent; std::string region_name; - - gCacheName->getFullName(item.mOwnerID, agent); LLViewerRegion* cur_region = gAgent.getRegion(); - if (cur_region) { region_name = cur_region->getName(); } - FSWSAssetBlacklist::getInstance()->addNewItemToBlacklist(item.mAssetID, agent, region_name, LLAssetType::AT_SOUND, true); + blacklist_avatar_name_cache_connection_map_t::iterator it = mBlacklistAvatarNameCacheConnections.find(item.mOwnerID); + if (it != mBlacklistAvatarNameCacheConnections.end()) + { + if (it->second.connected()) + { + it->second.disconnect(); + } + mBlacklistAvatarNameCacheConnections.erase(it); + } + mBlacklistAvatarNameCacheConnections[item.mOwnerID] = + LLAvatarNameCache::get(item.mOwnerID, boost::bind(&NACLFloaterExploreSounds::onBlacklistAvatarNameCacheCallback, this, _1, _2, item.mAssetID, region_name)); } } + +void NACLFloaterExploreSounds::onBlacklistAvatarNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& asset_id, const std::string& region_name) +{ + blacklist_avatar_name_cache_connection_map_t::iterator it = mBlacklistAvatarNameCacheConnections.find(av_id); + if (it != mBlacklistAvatarNameCacheConnections.end()) + { + if (it->second.connected()) + { + it->second.disconnect(); + } + mBlacklistAvatarNameCacheConnections.erase(it); + } + FSWSAssetBlacklist::getInstance()->addNewItemToBlacklist(asset_id, av_name.getCompleteName(), region_name, LLAssetType::AT_SOUND, true); +} + diff --git a/indra/newview/NACLfloaterexploresounds.h b/indra/newview/NACLfloaterexploresounds.h index 06a6ecda1d..33c1da97ce 100644 --- a/indra/newview/NACLfloaterexploresounds.h +++ b/indra/newview/NACLfloaterexploresounds.h @@ -8,6 +8,7 @@ #include "llfloater.h" #include "lleventtimer.h" #include "llaudioengine.h" +#include "llavatarnamecache.h" class LLCheckBoxCtrl; class LLScrollListCtrl; @@ -39,6 +40,11 @@ private: LLCheckBoxCtrl* mPaused; std::list mLastHistory; + + typedef std::map blacklist_avatar_name_cache_connection_map_t; + blacklist_avatar_name_cache_connection_map_t mBlacklistAvatarNameCacheConnections; + + void onBlacklistAvatarNameCacheCallback(const LLUUID& av_id, const LLAvatarName& av_name, const LLUUID& asset_id, const std::string& region_name); }; #endif