diff options
Diffstat (limited to 'indra/llui/llurlentry.cpp')
| -rw-r--r-- | indra/llui/llurlentry.cpp | 28 | 
1 files changed, 19 insertions, 9 deletions
| diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index 47a780b7dc..99ee688888 100644 --- a/indra/llui/llurlentry.cpp +++ b/indra/llui/llurlentry.cpp @@ -340,7 +340,8 @@ std::string LLUrlEntrySLURL::getLocation(const std::string &url) const  // secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about  // x-grid-location-info://lincoln.lindenlab.com/app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about  // -LLUrlEntryAgent::LLUrlEntryAgent() +LLUrlEntryAgent::LLUrlEntryAgent() : +	mAvatarNameCacheConnection()  {  	mPattern = boost::regex(APP_HEADER_REGEX "/agent/[\\da-f-]+/\\w+",  							boost::regex::perl|boost::regex::icase); @@ -371,7 +372,9 @@ void LLUrlEntryAgent::callObservers(const std::string &id,  void LLUrlEntryAgent::onAvatarNameCache(const LLUUID& id,  										const LLAvatarName& av_name)  { -	std::string label = av_name.getCompleteName(); +	mAvatarNameCacheConnection.disconnect(); +	 + 	std::string label = av_name.getCompleteName();  	// received the agent name from the server - tell our observers  	callObservers(id.asString(), label, mIcon); @@ -456,9 +459,11 @@ std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCa  	}  	else  	{ -		LLAvatarNameCache::get(agent_id, -			boost::bind(&LLUrlEntryAgent::onAvatarNameCache, -				this, _1, _2)); +		if (mAvatarNameCacheConnection.connected()) +		{ +			mAvatarNameCacheConnection.disconnect(); +		} +		mAvatarNameCacheConnection = LLAvatarNameCache::get(agent_id, boost::bind(&LLUrlEntryAgent::onAvatarNameCache, this, _1, _2));  		addObserver(agent_id_string, url, cb);  		return LLTrans::getString("LoadingData");  	} @@ -515,12 +520,15 @@ std::string LLUrlEntryAgent::getIcon(const std::string &url)  // secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/(completename|displayname|username)  // x-grid-location-info://lincoln.lindenlab.com/app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/(completename|displayname|username)  // -LLUrlEntryAgentName::LLUrlEntryAgentName() +LLUrlEntryAgentName::LLUrlEntryAgentName() : +	mAvatarNameCacheConnection()  {}  void LLUrlEntryAgentName::onAvatarNameCache(const LLUUID& id,  										const LLAvatarName& av_name)  { +	mAvatarNameCacheConnection.disconnect(); +  	std::string label = getName(av_name);  	// received the agent name from the server - tell our observers  	callObservers(id.asString(), label, mIcon); @@ -554,9 +562,11 @@ std::string LLUrlEntryAgentName::getLabel(const std::string &url, const LLUrlLab  	}  	else  	{ -		LLAvatarNameCache::get(agent_id, -			boost::bind(&LLUrlEntryAgentCompleteName::onAvatarNameCache, -				this, _1, _2)); +		if (mAvatarNameCacheConnection.connected()) +		{ +			mAvatarNameCacheConnection.disconnect(); +		} +		mAvatarNameCacheConnection = LLAvatarNameCache::get(agent_id, boost::bind(&LLUrlEntryAgentName::onAvatarNameCache, this, _1, _2));  		addObserver(agent_id_string, url, cb);  		return LLTrans::getString("LoadingData");  	} | 
