From 6928ec024060bb7181553206c9ee6a125e7c9a2d Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 27 Apr 2010 00:25:29 +0100
Subject: Add a parameter to prim inventory update to prevent event firing
---
.../Framework/Scenes/SceneObjectPartInventory.cs | 43 +++++++++++++---------
1 file changed, 25 insertions(+), 18 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 3b1b567..44c49c5 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -609,30 +609,37 @@ namespace OpenSim.Region.Framework.Scenes
/// false if the item did not exist, true if the update occurred successfully
public bool UpdateInventoryItem(TaskInventoryItem item)
{
- lock (m_items)
+ return UpdateInventoryItem(item, true);
+ }
+
+ public bool UpdateInventoryItem(TaskInventoryItem item, bool fireScriptEvents)
+ {
+ lock(m_items)
{
if (m_items.ContainsKey(item.ItemID))
{
- item.ParentID = m_part.UUID;
- item.ParentPartID = m_part.UUID;
- item.Flags = m_items[item.ItemID].Flags;
-
- // If group permissions have been set on, check that the groupID is up to date in case it has
- // changed since permissions were last set.
- if (item.GroupPermissions != (uint)PermissionMask.None)
- item.GroupID = m_part.GroupID;
-
- if (item.AssetID == UUID.Zero)
+ if (m_items.ContainsKey(item.ItemID))
{
- item.AssetID = m_items[item.ItemID].AssetID;
- }
-
+ item.ParentID = m_part.UUID;
+ item.ParentPartID = m_part.UUID;
+ item.Flags = m_items[item.ItemID].Flags;
+
+ // If group permissions have been set on, check that the groupID is up to date in case it has
+ // changed since permissions were last set.
+ if (item.GroupPermissions != (uint)PermissionMask.None)
+ item.GroupID = m_part.GroupID;
+
+ if (item.AssetID == UUID.Zero)
+ {
+ item.AssetID = m_items[item.ItemID].AssetID;
+ }
m_items[item.ItemID] = item;
m_inventorySerial++;
- m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
+ if (fireScriptEvents)
+ m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
HasInventoryChanged = true;
m_part.ParentGroup.HasGroupChanged = true;
-
+ m_items.LockItemsForWrite(false);
return true;
}
else
@@ -643,9 +650,9 @@ namespace OpenSim.Region.Framework.Scenes
item.ItemID, m_part.Name, m_part.UUID,
m_part.AbsolutePosition, m_part.ParentGroup.Scene.RegionInfo.RegionName);
}
- }
- return false;
+ return false;
+ }
}
///
--
cgit v1.1
From edde0be0a0902a5f9cf51df7ceb3325d50c95c6e Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 27 Apr 2010 01:11:14 +0100
Subject: Fix build break.
---
.../Framework/Scenes/SceneObjectPartInventory.cs | 34 +++++++++++-----------
1 file changed, 17 insertions(+), 17 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 44c49c5..4da63c0 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -633,24 +633,24 @@ namespace OpenSim.Region.Framework.Scenes
{
item.AssetID = m_items[item.ItemID].AssetID;
}
- m_items[item.ItemID] = item;
- m_inventorySerial++;
- if (fireScriptEvents)
- m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
- HasInventoryChanged = true;
- m_part.ParentGroup.HasGroupChanged = true;
- m_items.LockItemsForWrite(false);
- return true;
- }
- else
- {
- m_log.ErrorFormat(
- "[PRIM INVENTORY]: " +
- "Tried to retrieve item ID {0} from prim {1}, {2} at {3} in {4} but the item does not exist in this inventory",
- item.ItemID, m_part.Name, m_part.UUID,
- m_part.AbsolutePosition, m_part.ParentGroup.Scene.RegionInfo.RegionName);
- }
+ m_items[item.ItemID] = item;
+ m_inventorySerial++;
+ if (fireScriptEvents)
+ m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
+ HasInventoryChanged = true;
+ m_part.ParentGroup.HasGroupChanged = true;
+ return true;
+ }
+ else
+ {
+ m_log.ErrorFormat(
+ "[PRIM INVENTORY]: " +
+ "Tried to retrieve item ID {0} from prim {1}, {2} at {3} in {4} but the item does not exist in this inventory",
+ item.ItemID, m_part.Name, m_part.UUID,
+ m_part.AbsolutePosition, m_part.ParentGroup.Scene.RegionInfo.RegionName);
+ }
+ }
return false;
}
}
--
cgit v1.1