From ffeee4889e46cb776e93b5e92eb20965e31078ab Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Thu, 25 Jun 2015 17:04:02 +0200 Subject: [PATCH 1/5] - internal : RLVa files #include clean-up --HG-- branch : RLVa --- indra/newview/rlvcommon.cpp | 1 - indra/newview/rlvextensions.cpp | 1 - indra/newview/rlvhandler.cpp | 1 + indra/newview/rlvhelper.cpp | 4 ---- indra/newview/rlvhelper.h | 1 - indra/newview/rlvinventory.cpp | 7 ------- indra/newview/rlvinventory.h | 3 --- indra/newview/rlvlocks.cpp | 1 - indra/newview/rlvui.cpp | 1 - 9 files changed, 1 insertion(+), 19 deletions(-) diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index 7ce2f67197..970a611aea 100644 --- a/indra/newview/rlvcommon.cpp +++ b/indra/newview/rlvcommon.cpp @@ -24,7 +24,6 @@ #include "llviewerparcelmgr.h" #include "llviewermenu.h" #include "llviewerregion.h" -#include "llviewerstats.h" #include "llworld.h" #include "rlvactions.h" diff --git a/indra/newview/rlvextensions.cpp b/indra/newview/rlvextensions.cpp index b835df30f7..0e4ed9ae51 100644 --- a/indra/newview/rlvextensions.cpp +++ b/indra/newview/rlvextensions.cpp @@ -18,7 +18,6 @@ #include "llagent.h" #include "llagentcamera.h" #include "lldaycyclemanager.h" -#include "llviewercontrol.h" #include "llvoavatarself.h" #include "llwlparammanager.h" diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index f6f1735d8f..f8241d6a79 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -27,6 +27,7 @@ #include "llviewerregion.h" #include "rlvhandler.h" +#include "rlvhelper.h" #include "rlvinventory.h" #include "rlvlocks.h" #include "rlvui.h" diff --git a/indra/newview/rlvhelper.cpp b/indra/newview/rlvhelper.cpp index 4488ec030a..0bec3ec85b 100644 --- a/indra/newview/rlvhelper.cpp +++ b/indra/newview/rlvhelper.cpp @@ -15,15 +15,11 @@ */ #include "llviewerprecompiledheaders.h" -#include "llagent.h" -#include "llagentwearables.h" #include "llappearancemgr.h" #include "llattachmentsmgr.h" #include "llgesturemgr.h" #include "llnotificationsutil.h" -#include "llviewerobject.h" #include "llviewerobjectlist.h" -#include "llwlparammanager.h" #include "rlvcommon.h" #include "rlvhelper.h" diff --git a/indra/newview/rlvhelper.h b/indra/newview/rlvhelper.h index 0187ab494e..9cce832af1 100644 --- a/indra/newview/rlvhelper.h +++ b/indra/newview/rlvhelper.h @@ -21,7 +21,6 @@ #include "llinventorymodel.h" #include "llviewerinventory.h" #include "llwearabletype.h" -#include "llwlparamset.h" #include "rlvdefines.h" #include "rlvcommon.h" diff --git a/indra/newview/rlvinventory.cpp b/indra/newview/rlvinventory.cpp index 62c4d35d89..d53b50549e 100644 --- a/indra/newview/rlvinventory.cpp +++ b/indra/newview/rlvinventory.cpp @@ -17,17 +17,10 @@ #include "llviewerprecompiledheaders.h" #include "llagent.h" #include "llappearancemgr.h" -#include "llinventoryobserver.h" #include "llstartup.h" #include "llviewerfoldertype.h" -#include "llviewerobject.h" -#include "llvoavatarself.h" -#include "rlvdefines.h" -#include "rlvcommon.h" -#include "rlvlocks.h" #include "rlvinventory.h" -#include "rlvhandler.h" #include "boost/algorithm/string.hpp" diff --git a/indra/newview/rlvinventory.h b/indra/newview/rlvinventory.h index 3c15cad43c..cacc9394c0 100644 --- a/indra/newview/rlvinventory.h +++ b/indra/newview/rlvinventory.h @@ -18,12 +18,9 @@ #define RLV_INVENTORY_H #include "llinventoryfunctions.h" -#include "llinventorymodel.h" #include "llinventoryobserver.h" #include "llsingleton.h" -#include "llviewerinventory.h" -#include "rlvcommon.h" #include "rlvhelper.h" #include "rlvlocks.h" diff --git a/indra/newview/rlvlocks.cpp b/indra/newview/rlvlocks.cpp index 3b3313fc37..56dcbb2cdb 100644 --- a/indra/newview/rlvlocks.cpp +++ b/indra/newview/rlvlocks.cpp @@ -18,7 +18,6 @@ #include "llagent.h" #include "llappearancemgr.h" #include "llattachmentsmgr.h" -#include "llinventoryobserver.h" #include "lloutfitobserver.h" #include "llviewerobjectlist.h" #include "pipeline.h" diff --git a/indra/newview/rlvui.cpp b/indra/newview/rlvui.cpp index b004b9c52c..5935eb2429 100644 --- a/indra/newview/rlvui.cpp +++ b/indra/newview/rlvui.cpp @@ -34,7 +34,6 @@ #include "llsidepanelappearance.h" #include "lltabcontainer.h" #include "llteleporthistory.h" -#include "llteleporthistorystorage.h" #include "lltoolmgr.h" #include "llviewerparcelmgr.h" #include "llviewerregion.h" From 9fd750963bcbc08d260aa60a247fd0c89bc63c8b Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Sat, 27 Jun 2015 23:08:54 +0200 Subject: [PATCH 2/5] - fixed : RlvGiveToRLVOffer::onCategoryCreateCallback should be called with a folder UUID --HG-- branch : RLVa --- indra/newview/rlvinventory.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/rlvinventory.cpp b/indra/newview/rlvinventory.cpp index d53b50549e..ce9f35ce54 100644 --- a/indra/newview/rlvinventory.cpp +++ b/indra/newview/rlvinventory.cpp @@ -505,14 +505,14 @@ bool RlvGiveToRLVOffer::createDestinationFolder(const std::string& strPath) const LLUUID& idRlvRoot = RlvInventory::instance().getSharedRootID(); if (idRlvRoot.notNull()) { - onCategoryCreateCallback(LLSD().with("folder_id", idRlvRoot), this); + onCategoryCreateCallback(idRlvRoot, this); } else { inventory_func_type f = boost::bind(RlvGiveToRLVOffer::onCategoryCreateCallback, _1, this); const LLUUID idTemp = gInventory.createNewCategory(gInventory.getRootFolderID(), LLFolderType::FT_NONE, RLV_ROOT_FOLDER, f); if (idTemp.notNull()) - onCategoryCreateCallback(LLSD().with("folder_id", idTemp), this); + onCategoryCreateCallback(idTemp, this); } return true; } From 24c337a255322caea03828c7380024976f16a45c Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Tue, 30 Jun 2015 20:52:54 +0200 Subject: [PATCH 3/5] - fixed : crash when wearing a folder containing an item with the same asset UUID as a worn item -> bad conversion of array => iterator loop in previous merges --HG-- branch : RLVa --- indra/newview/llappearancemgr.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index cda7024330..c237d63ea4 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -1282,24 +1282,22 @@ static void removeDuplicateItems(LLInventoryModel::item_array_t& items) items = new_items; } -// [SL:KB] - Patch: Appearance-WearableDuplicateAssets | Checked: 2011-07-24 (Catznip-2.6.0e) | Added: Catznip-2.6.0e +// [SL:KB] - Patch: Appearance-WearableDuplicateAssets | Checked: 2015-06-30 (Catznip-3.7) static void removeDuplicateWearableItemsByAssetID(LLInventoryModel::item_array_t& items) { std::set idsAsset; - - LLInventoryModel::item_array_t::const_iterator itItem = items.begin(); - while (itItem != items.end()) - { - const LLViewerInventoryItem* pItem = *itItem; - if (pItem->isWearableType()) + items.erase(std::remove_if(items.begin(), items.end(), + [&idsAsset](const LLViewerInventoryItem* pItem) { - if (idsAsset.end() == idsAsset.find(pItem->getAssetUUID())) - idsAsset.insert(pItem->getAssetUUID()); - else - itItem = items.erase(itItem); - } - ++itItem; - } + if (pItem->isWearableType()) + { + const LLUUID& idAsset = pItem->getAssetUUID(); + if ( (idAsset.notNull()) && (idsAsset.end() != idsAsset.find(idAsset)) ) + return true; + idsAsset.insert(idAsset); + } + return false; + }), items.end()); } // [/SL:KB] From c0b4ccd51c7ebbdf53ebf05feb6c086386633b80 Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Mon, 6 Jul 2015 21:44:42 +0200 Subject: [PATCH 4/5] - fixed : RLVaWearReplaceUnlocked isn't enabled by default on non-Catznip viewers --HG-- branch : RLVa --- indra/newview/app_settings/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index e3e3ee5375..f21c294445 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -220,7 +220,7 @@ Type Boolean Value - 0 + 1 WarnFirstRLVGiveToRLV From 98cfb4f23314e2da592a16bb2b8f76423e3e5f1d Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Wed, 8 Jul 2015 23:26:48 +0200 Subject: [PATCH 5/5] - fixed : scripted items that machine gun fire small force-wears (e.g. Sub Suit) can cause some items to not get worn -> force-wearing was optimized for the case where all wear commands are batched together on a single line (using the folder slam) -> machine gun firing force-wears will cause multiple folder slams to occur in parallel with one slam overwriting the other --HG-- branch : RLVa --- indra/newview/rlvhelper.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/indra/newview/rlvhelper.cpp b/indra/newview/rlvhelper.cpp index 0bec3ec85b..6e8180d282 100644 --- a/indra/newview/rlvhelper.cpp +++ b/indra/newview/rlvhelper.cpp @@ -1015,8 +1015,17 @@ void RlvForceWear::done() LLAppearanceMgr::instance().removeItemsFromAvatar(remItems, cb, true); } - if ( (!addBodyParts.empty()) || (!addClothing.empty()) || (!m_addGestures.empty()) ) + if ( (addBodyParts.empty()) && (!addClothing.empty()) && (m_addGestures.empty()) ) { + // Clothing items only + uuid_vec_t idClothing; + for (const LLViewerInventoryItem* pItem : addClothing) + idClothing.push_back(pItem->getUUID()); + LLAppearanceMgr::instance().wearItemsOnAvatar(idClothing, false, false, cb); + } + else if ( (!addBodyParts.empty()) || (!addClothing.empty()) || (!m_addGestures.empty()) ) + { + // Mixture of body parts, clothing and/or gestures LLInventoryModel::item_array_t addAttachments; LLAppearanceMgr::instance().updateCOF(addBodyParts, addClothing, addAttachments, m_addGestures, true, LLUUID::null, cb);