Automated merge with ssh://hg.lindenlab.com/viewer/viewer-2-0/
commit
de6ca4c5ea
|
|
@ -2022,6 +2022,8 @@ void LLInitialWearablesFetch::done()
|
|||
else
|
||||
{
|
||||
processWearablesMessage();
|
||||
// Create links for attachments that may have arrived before the COF existed.
|
||||
LLAppearanceManager::linkRegisteredAttachments();
|
||||
}
|
||||
delete this;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1123,6 +1123,7 @@ void LLAppearanceManager::wearItem( LLInventoryItem* item, bool do_update )
|
|||
{
|
||||
if (do_update)
|
||||
LLAppearanceManager::updateAppearanceFromCOF();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1134,6 +1135,7 @@ void LLAppearanceManager::wearItem( LLInventoryItem* item, bool do_update )
|
|||
LLAssetType::AT_LINK,
|
||||
cb);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* static */
|
||||
|
|
@ -1281,3 +1283,22 @@ void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id)
|
|||
//llinfos << "no link changes, inv link not enabled" << llendl;
|
||||
}
|
||||
}
|
||||
|
||||
/* static */
|
||||
void LLAppearanceManager::linkRegisteredAttachments()
|
||||
{
|
||||
for (std::set<LLUUID>::iterator it = sRegisteredAttachments.begin();
|
||||
it != sRegisteredAttachments.end();
|
||||
++it)
|
||||
{
|
||||
LLUUID item_id = *it;
|
||||
LLViewerInventoryItem *item = gInventory.getItem(item_id);
|
||||
if (item)
|
||||
{
|
||||
wearItem(item, false);
|
||||
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
}
|
||||
sRegisteredAttachments.clear();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ public:
|
|||
static void unregisterAttachment(const LLUUID& item_id);
|
||||
static void registerAttachment(const LLUUID& item_id);
|
||||
static void setAttachmentInvLinkEnable(bool val);
|
||||
static void linkRegisteredAttachments();
|
||||
|
||||
private:
|
||||
static void filterWearableItems(LLInventoryModel::item_array_t& items, S32 max_per_type);
|
||||
|
|
|
|||
|
|
@ -2199,7 +2199,7 @@ bool LLInventoryModel::loadSkeleton(
|
|||
|
||||
// Add all the items loaded which are parented to a
|
||||
// category with a correctly cached parent
|
||||
count = items.count();
|
||||
S32 bad_link_count = 0;
|
||||
cat_map_t::iterator unparented = mCategoryMap.end();
|
||||
for(item_array_t::const_iterator item_iter = items.begin();
|
||||
item_iter != items.end();
|
||||
|
|
@ -2216,7 +2216,11 @@ bool LLInventoryModel::loadSkeleton(
|
|||
// This can happen if the linked object's baseobj is removed from the cache but the linked object is still in the cache.
|
||||
if (item->getIsBrokenLink())
|
||||
{
|
||||
llinfos << "Attempted to add cached link item without baseobj present ( name: " << item->getName() << " itemID: " << item->getUUID() << " assetID: " << item->getAssetUUID() << " ). Ignoring and invalidating " << cat->getName() << " . " << llendl;
|
||||
bad_link_count++;
|
||||
lldebugs << "Attempted to add cached link item without baseobj present ( name: "
|
||||
<< item->getName() << " itemID: " << item->getUUID()
|
||||
<< " assetID: " << item->getAssetUUID()
|
||||
<< " ). Ignoring and invalidating " << cat->getName() << " . " << llendl;
|
||||
invalid_categories.insert(cit->second);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -2226,6 +2230,12 @@ bool LLInventoryModel::loadSkeleton(
|
|||
}
|
||||
}
|
||||
}
|
||||
if (bad_link_count > 0)
|
||||
{
|
||||
llinfos << "Attempted to add " << bad_link_count
|
||||
<< " cached link items without baseobj present. "
|
||||
<< "The corresponding categories were invalidated." << llendl;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue