diff options
| -rw-r--r-- | indra/newview/llfloaterpathfindinglinksets.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llfloaterpathfindinglinksets.h | 1 | ||||
| -rw-r--r-- | indra/newview/llpathfindinglinksetlist.cpp | 19 | ||||
| -rw-r--r-- | indra/newview/llpathfindinglinksetlist.h | 2 | 
4 files changed, 32 insertions, 12 deletions
diff --git a/indra/newview/llfloaterpathfindinglinksets.cpp b/indra/newview/llfloaterpathfindinglinksets.cpp index 73ab01a89f..2b3007b435 100644 --- a/indra/newview/llfloaterpathfindinglinksets.cpp +++ b/indra/newview/llfloaterpathfindinglinksets.cpp @@ -320,7 +320,7 @@ void LLFloaterPathfindingLinksets::requestSetLinksets(LLPathfindingLinksetListPt  	llassert(!isMessagingInProgress());
  	if (!isMessagingInProgress())
  	{
 -		switch (LLPathfindingManager::getInstance()->requestSetLinksets(pLinksetList, pLinksetUse, pA, pB, pC, pD, boost::bind(&LLFloaterPathfindingLinksets::handleNewLinksets, this, _1, _2)))
 +		switch (LLPathfindingManager::getInstance()->requestSetLinksets(pLinksetList, pLinksetUse, pA, pB, pC, pD, boost::bind(&LLFloaterPathfindingLinksets::handleUpdateLinksets, this, _1, _2)))
  		{
  		case LLPathfindingManager::kLinksetsRequestStarted :
  			setMessagingState(kMessagingSetRequestSent);
 @@ -359,6 +359,26 @@ void LLFloaterPathfindingLinksets::handleNewLinksets(LLPathfindingManager::ELink  	}
  }
 +void LLFloaterPathfindingLinksets::handleUpdateLinksets(LLPathfindingManager::ELinksetsRequestStatus pLinksetsRequestStatus, LLPathfindingLinksetListPtr pLinksetsListPtr)
 +{
 +	mLinksetsListPtr->update(*pLinksetsListPtr);
 +	updateScrollList();
 +
 +	switch (pLinksetsRequestStatus)
 +	{
 +	case LLPathfindingManager::kLinksetsRequestCompleted :
 +		setMessagingState(kMessagingComplete);
 +		break;
 +	case LLPathfindingManager::kLinksetsRequestError :
 +		setMessagingState(kMessagingSetError);
 +		break;
 +	default :
 +		setMessagingState(kMessagingSetError);
 +		llassert(0);
 +		break;
 +	}
 +}
 +
  void LLFloaterPathfindingLinksets::onApplyAllFilters()
  {
  	applyFilters();
 diff --git a/indra/newview/llfloaterpathfindinglinksets.h b/indra/newview/llfloaterpathfindinglinksets.h index f4758e2335..abbc355f46 100644 --- a/indra/newview/llfloaterpathfindinglinksets.h +++ b/indra/newview/llfloaterpathfindinglinksets.h @@ -113,6 +113,7 @@ private:  	void requestGetLinksets();
  	void requestSetLinksets(LLPathfindingLinksetListPtr pLinksetList, LLPathfindingLinkset::ELinksetUse pLinksetUse, S32 pA, S32 pB, S32 pC, S32 pD);
  	void handleNewLinksets(LLPathfindingManager::ELinksetsRequestStatus pLinksetsRequestStatus, LLPathfindingLinksetListPtr pLinksetsListPtr);
 +	void handleUpdateLinksets(LLPathfindingManager::ELinksetsRequestStatus pLinksetsRequestStatus, LLPathfindingLinksetListPtr pLinksetsListPtr);
  	void onApplyAllFilters();
  	void onClearFiltersClicked();
 diff --git a/indra/newview/llpathfindinglinksetlist.cpp b/indra/newview/llpathfindinglinksetlist.cpp index e67b7b800c..7facf88c40 100644 --- a/indra/newview/llpathfindinglinksetlist.cpp +++ b/indra/newview/llpathfindinglinksetlist.cpp @@ -62,24 +62,23 @@ LLPathfindingLinksetList::~LLPathfindingLinksetList()  	clear();
  }
 -void LLPathfindingLinksetList::update(const LLSD& pLinksetItems)
 +void LLPathfindingLinksetList::update(const LLPathfindingLinksetList &pUpdateLinksetList)
  {
 -	for (LLSD::map_const_iterator linksetItemIter = pLinksetItems.beginMap();
 -		linksetItemIter != pLinksetItems.endMap(); ++linksetItemIter)
 +	for (LLPathfindingLinksetList::const_iterator updateLinksetIter = pUpdateLinksetList.begin();
 +		updateLinksetIter != pUpdateLinksetList.end(); ++updateLinksetIter)
  	{
 -		const std::string& uuid(linksetItemIter->first);
 -		const LLSD& linksetData = linksetItemIter->second;
 -		LLPathfindingLinksetMap::iterator linksetIter = this->find(uuid);
 +		const std::string &uuid = updateLinksetIter->first;
 +		const LLPathfindingLinksetPtr updateLinksetPtr = updateLinksetIter->second;
 +
 +		LLPathfindingLinksetList::iterator linksetIter = find(uuid);
  		if (linksetIter == end())
  		{
 -			LLPathfindingLinksetPtr linkset(new LLPathfindingLinkset(uuid, linksetData));
 -			insert(std::pair<std::string, LLPathfindingLinksetPtr>(uuid, linkset));
 +			insert(std::pair<std::string, LLPathfindingLinksetPtr>(uuid, updateLinksetPtr));
  		}
  		else
  		{
  			LLPathfindingLinksetPtr linksetPtr = linksetIter->second;
 -			const LLPathfindingLinkset newLinkset(uuid, linksetData);
 -			*linksetPtr = newLinkset;
 +			*linksetPtr = *updateLinksetPtr;
  		}
  	}
  }
 diff --git a/indra/newview/llpathfindinglinksetlist.h b/indra/newview/llpathfindinglinksetlist.h index 9ec36c2431..443f331770 100644 --- a/indra/newview/llpathfindinglinksetlist.h +++ b/indra/newview/llpathfindinglinksetlist.h @@ -47,7 +47,7 @@ public:  	LLPathfindingLinksetList(const LLSD& pLinksetItems);
  	virtual ~LLPathfindingLinksetList();
 -	void update(const LLSD& pLinksetItems);
 +	void update(const LLPathfindingLinksetList &pUpdateLinksetList);
  	LLSD encodeAlteredFields(LLPathfindingLinkset::ELinksetUse pLinksetUse, S32 pA, S32 pB, S32 pC, S32 pD) const;
  | 
