For EXT-1591: Current Outfit Folder contains duplicate attachment items after relog.
--HG-- branch : avatar-pipelinemeow-7.2.2
parent
7add9de18f
commit
9109809fb1
|
|
@ -2014,7 +2014,8 @@ void LLInitialWearablesFetch::done()
|
|||
LLFindWearables is_wearable;
|
||||
gInventory.collectDescendentsIf(mCompleteFolders.front(), cat_array, wearable_array,
|
||||
LLInventoryModel::EXCLUDE_TRASH, is_wearable);
|
||||
|
||||
|
||||
LLAppearanceManager::setAttachmentInvLinkEnable(true);
|
||||
if (wearable_array.count() > 0)
|
||||
{
|
||||
LLAppearanceManager::instance().updateAppearanceFromCOF();
|
||||
|
|
|
|||
|
|
@ -1181,6 +1181,14 @@ void LLAppearanceManager::dumpItemArray(const LLInventoryModel::item_array_t& it
|
|||
|
||||
|
||||
std::set<LLUUID> LLAppearanceManager::sRegisteredAttachments;
|
||||
bool LLAppearanceManager::sAttachmentInvLinkEnabled(false);
|
||||
|
||||
/* static */
|
||||
void LLAppearanceManager::setAttachmentInvLinkEnable(bool val)
|
||||
{
|
||||
llinfos << "setAttachmentInvLinkEnable => " << (int) val << llendl;
|
||||
sAttachmentInvLinkEnabled = val;
|
||||
}
|
||||
|
||||
void dumpAttachmentSet(const std::set<LLUUID>& atts, const std::string& msg)
|
||||
{
|
||||
|
|
@ -1204,6 +1212,22 @@ void LLAppearanceManager::registerAttachment(const LLUUID& item_id)
|
|||
{
|
||||
sRegisteredAttachments.insert(item_id);
|
||||
dumpAttachmentSet(sRegisteredAttachments,"after register:");
|
||||
|
||||
if (sAttachmentInvLinkEnabled)
|
||||
{
|
||||
LLViewerInventoryItem *item = gInventory.getItem(item_id);
|
||||
if (item)
|
||||
{
|
||||
LLAppearanceManager::dumpCat(LLAppearanceManager::getCOF(),"Adding attachment link:");
|
||||
LLAppearanceManager::wearItem(item,false); // Add COF link for item.
|
||||
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
llinfos << "no link changes, inv link not enabled" << llendl;
|
||||
}
|
||||
}
|
||||
|
||||
/* static */
|
||||
|
|
@ -1211,4 +1235,17 @@ void LLAppearanceManager::unregisterAttachment(const LLUUID& item_id)
|
|||
{
|
||||
sRegisteredAttachments.erase(item_id);
|
||||
dumpAttachmentSet(sRegisteredAttachments,"after unregister:");
|
||||
|
||||
if (sAttachmentInvLinkEnabled)
|
||||
{
|
||||
LLAppearanceManager::dumpCat(LLAppearanceManager::getCOF(),"Removing attachment link:");
|
||||
LLAppearanceManager::removeItemLinks(item_id, false);
|
||||
// BAP - needs to change for label to track link.
|
||||
gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id);
|
||||
gInventory.notifyObservers();
|
||||
}
|
||||
else
|
||||
{
|
||||
llinfos << "no link changes, inv link not enabled" << llendl;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public:
|
|||
static void dumpItemArray(const LLInventoryModel::item_array_t& items, const std::string& msg);
|
||||
static void unregisterAttachment(const LLUUID& item_id);
|
||||
static void registerAttachment(const LLUUID& item_id);
|
||||
|
||||
static void setAttachmentInvLinkEnable(bool val);
|
||||
|
||||
private:
|
||||
static void filterWearableItems(LLInventoryModel::item_array_t& items, S32 max_per_type);
|
||||
|
|
@ -99,6 +99,7 @@ private:
|
|||
static void purgeCategory(const LLUUID& category, bool keep_outfit_links);
|
||||
|
||||
static std::set<LLUUID> sRegisteredAttachments;
|
||||
static bool sAttachmentInvLinkEnabled;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1081,15 +1081,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view
|
|||
{
|
||||
const LLUUID& attachment_id = viewer_object->getItemID();
|
||||
LLAppearanceManager::registerAttachment(attachment_id);
|
||||
LLViewerInventoryItem *item = gInventory.getItem(attachment_id);
|
||||
if (item)
|
||||
{
|
||||
LLAppearanceManager::dumpCat(LLAppearanceManager::getCOF(),"Adding attachment link:");
|
||||
LLAppearanceManager::wearItem(item,false); // Add COF link for item.
|
||||
gInventory.addChangedMask(LLInventoryObserver::LABEL, attachment_id);
|
||||
}
|
||||
}
|
||||
gInventory.notifyObservers();
|
||||
|
||||
return attachment;
|
||||
}
|
||||
|
|
@ -1127,14 +1119,9 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
|
|||
}
|
||||
else
|
||||
{
|
||||
LLAppearanceManager::dumpCat(LLAppearanceManager::getCOF(),"Removing attachment link:");
|
||||
LLAppearanceManager::removeItemLinks(attachment_id, false);
|
||||
LLAppearanceManager::unregisterAttachment(attachment_id);
|
||||
}
|
||||
|
||||
// BAP - needs to change for label to track link.
|
||||
gInventory.addChangedMask(LLInventoryObserver::LABEL, attachment_id);
|
||||
gInventory.notifyObservers();
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
|
|
|||
Loading…
Reference in New Issue