merge back more late beta fixes from 3.3.4
commit
5a563069e8
2
.hgtags
2
.hgtags
|
|
@ -337,3 +337,5 @@ cbea6356ce9cb0c313b6777f10c5c14783264fcc DRTVWR-174
|
|||
bce218b2b45b730b22cc51e4807aa8b571cadef3 DRTVWR-173
|
||||
f91d003091a61937a044652c4c674447f7dcbb7a 3.3.4-beta1
|
||||
82b5330bc8b17d0d4b598832e9c5a92e90075682 3.3.4-beta2
|
||||
eb539c65e6ee26eea2bf373af2d0f4b52dc91289 DRTVWR-177
|
||||
a8057e1b9a1246b434a27405be35e030f7d28b0c 3.3.4-beta3
|
||||
|
|
|
|||
|
|
@ -1007,7 +1007,14 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
|
|||
}
|
||||
}
|
||||
// Add the texture item to the target object's inventory.
|
||||
hit_obj->updateInventory(new_item, TASK_INVENTORY_ITEM_KEY, true);
|
||||
if (LLAssetType::AT_TEXTURE == new_item->getType())
|
||||
{
|
||||
hit_obj->updateTextureInventory(new_item, TASK_INVENTORY_ITEM_KEY, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
hit_obj->updateInventory(new_item, TASK_INVENTORY_ITEM_KEY, true);
|
||||
}
|
||||
// TODO: Check to see if adding the item was successful; if not, then
|
||||
// we should return false here.
|
||||
}
|
||||
|
|
@ -1022,7 +1029,14 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj,
|
|||
// *FIX: may want to make sure agent can paint hit_obj.
|
||||
|
||||
// Add the texture item to the target object's inventory.
|
||||
hit_obj->updateInventory(new_item, TASK_INVENTORY_ITEM_KEY, true);
|
||||
if (LLAssetType::AT_TEXTURE == new_item->getType())
|
||||
{
|
||||
hit_obj->updateTextureInventory(new_item, TASK_INVENTORY_ITEM_KEY, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
hit_obj->updateInventory(new_item, TASK_INVENTORY_ITEM_KEY, true);
|
||||
}
|
||||
// Force the object to update its refetch its inventory so it has this texture.
|
||||
hit_obj->fetchInventoryFromServer();
|
||||
// TODO: Check to see if adding the item was successful; if not, then
|
||||
|
|
|
|||
|
|
@ -2924,6 +2924,33 @@ void LLViewerObject::removeInventory(const LLUUID& item_id)
|
|||
++mInventorySerialNum;
|
||||
}
|
||||
|
||||
bool LLViewerObject::isTextureInInventory(LLViewerInventoryItem* item)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if (item && LLAssetType::AT_TEXTURE == item->getType())
|
||||
{
|
||||
std::list<LLUUID>::iterator begin = mPendingInventoryItemsIDs.begin();
|
||||
std::list<LLUUID>::iterator end = mPendingInventoryItemsIDs.end();
|
||||
|
||||
bool is_fetching = std::find(begin, end, item->getAssetUUID()) != end;
|
||||
bool is_fetched = getInventoryItemByAsset(item->getAssetUUID()) != NULL;
|
||||
|
||||
result = is_fetched || is_fetching;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void LLViewerObject::updateTextureInventory(LLViewerInventoryItem* item, U8 key, bool is_new)
|
||||
{
|
||||
if (item && !isTextureInInventory(item))
|
||||
{
|
||||
mPendingInventoryItemsIDs.push_back(item->getAssetUUID());
|
||||
updateInventory(item, key, is_new);
|
||||
}
|
||||
}
|
||||
|
||||
void LLViewerObject::updateInventory(
|
||||
LLViewerInventoryItem* item,
|
||||
U8 key,
|
||||
|
|
@ -2931,21 +2958,6 @@ void LLViewerObject::updateInventory(
|
|||
{
|
||||
LLMemType mt(LLMemType::MTYPE_OBJECT);
|
||||
|
||||
std::list<LLUUID>::iterator begin = mPendingInventoryItemsIDs.begin();
|
||||
std::list<LLUUID>::iterator end = mPendingInventoryItemsIDs.end();
|
||||
|
||||
bool is_fetching = std::find(begin, end, item->getAssetUUID()) != end;
|
||||
bool is_fetched = getInventoryItemByAsset(item->getAssetUUID()) != NULL;
|
||||
|
||||
if (is_fetched || is_fetching)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
mPendingInventoryItemsIDs.push_back(item->getAssetUUID());
|
||||
}
|
||||
|
||||
// This slices the object into what we're concerned about on the
|
||||
// viewer. The simulator will take the permissions and transfer
|
||||
// ownership.
|
||||
|
|
|
|||
|
|
@ -432,12 +432,15 @@ public:
|
|||
// manager until we have better iterators.
|
||||
void updateInventory(LLViewerInventoryItem* item, U8 key, bool is_new);
|
||||
void updateInventoryLocal(LLInventoryItem* item, U8 key); // Update without messaging.
|
||||
void updateTextureInventory(LLViewerInventoryItem* item, U8 key, bool is_new);
|
||||
LLInventoryObject* getInventoryObject(const LLUUID& item_id);
|
||||
void getInventoryContents(LLInventoryObject::object_list_t& objects);
|
||||
LLInventoryObject* getInventoryRoot();
|
||||
LLViewerInventoryItem* getInventoryItemByAsset(const LLUUID& asset_id);
|
||||
S16 getInventorySerial() const { return mInventorySerialNum; }
|
||||
|
||||
bool isTextureInInventory(LLViewerInventoryItem* item);
|
||||
|
||||
// These functions does viewer-side only object inventory modifications
|
||||
void updateViewerInventoryAsset(
|
||||
const LLViewerInventoryItem* item,
|
||||
|
|
|
|||
Loading…
Reference in New Issue