SH-4234 FIX - the only persistent failure seen was caused by a broken link in the outfit. Modified updateIsDirty() to ignore broken links.

meow-7.2.2
Brad Payne (Vir Linden) 2013-06-06 13:55:27 -04:00
parent a5e41af809
commit b1769b6a60
3 changed files with 32 additions and 1 deletions

View File

@ -2611,7 +2611,7 @@ void LLAppearanceMgr::updateIsDirty()
if (base_outfit.notNull())
{
LLIsOfAssetType collector = LLIsOfAssetType(LLAssetType::AT_LINK);
LLIsValidItemLink collector;
LLInventoryModel::cat_array_t cof_cats;
LLInventoryModel::item_array_t cof_items;
@ -2625,6 +2625,7 @@ void LLAppearanceMgr::updateIsDirty()
if(outfit_items.count() != cof_items.count())
{
LL_DEBUGS("Avatar") << "item count different" << llendl;
// Current outfit folder should have one more item than the outfit folder.
// this one item is the link back to the outfit folder itself.
mOutfitIsDirty = true;
@ -2644,6 +2645,22 @@ void LLAppearanceMgr::updateIsDirty()
item1->getName() != item2->getName() ||
item1->getActualDescription() != item2->getActualDescription())
{
if (item1->getLinkedUUID() != item2->getLinkedUUID())
{
LL_DEBUGS("Avatar") << "link id different " << llendl;
}
else
{
if (item1->getName() != item2->getName())
{
LL_DEBUGS("Avatar") << "name different " << item1->getName() << " " << item2->getName() << llendl;
}
if (item1->getActualDescription() != item2->getActualDescription())
{
LL_DEBUGS("Avatar") << "desc different " << item1->getActualDescription()
<< " " << item2->getActualDescription() << llendl;
}
}
mOutfitIsDirty = true;
return;
}

View File

@ -738,6 +738,13 @@ bool LLIsOfAssetType::operator()(LLInventoryCategory* cat, LLInventoryItem* item
return FALSE;
}
bool LLIsValidItemLink::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
LLViewerInventoryItem *vitem = dynamic_cast<LLViewerInventoryItem*>(item);
if (!vitem) return false;
return (vitem->getActualType() == LLAssetType::AT_LINK && !vitem->getIsBrokenLink());
}
bool LLIsTypeWithPermissions::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
{
if(mType == LLAssetType::AT_CATEGORY)

View File

@ -186,6 +186,13 @@ protected:
LLAssetType::EType mType;
};
class LLIsValidItemLink : public LLInventoryCollectFunctor
{
public:
virtual bool operator()(LLInventoryCategory* cat,
LLInventoryItem* item);
};
class LLIsTypeWithPermissions : public LLInventoryCollectFunctor
{
public: