From 1b2edfe75f4fe8b320f65ad54f6f2b0972fda154 Mon Sep 17 00:00:00 2001
From: root
Date: Thu, 16 Sep 2010 23:12:32 +0200
Subject: JustinCC is evil. f7b28dd3 broke script persistence. This fixes it.
---
.../Framework/Interfaces/IEntityInventory.cs | 9 +++++++
.../Region/Framework/Scenes/SceneObjectGroup.cs | 1 +
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 3 ++-
.../Framework/Scenes/SceneObjectPartInventory.cs | 28 ++++++++++++++++++++++
4 files changed, 40 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
index 7edb43e..2e6faa0 100644
--- a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
@@ -58,6 +58,15 @@ namespace OpenSim.Region.Framework.Interfaces
void ResetInventoryIDs();
///
+ /// Reset parent object UUID for all the items in the prim's inventory.
+ ///
+ ///
+ /// If this method is called and there are inventory items, then we regard the inventory as having changed.
+ ///
+ /// Link number for the part
+ void ResetObjectID();
+
+ ///
/// Change every item in this inventory to a new owner.
///
///
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index f9a8d41..833c9d3 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -511,6 +511,7 @@ namespace OpenSim.Region.Framework.Scenes
if (node.Attributes["UUID"] != null)
{
UUID itemid = new UUID(node.Attributes["UUID"].Value);
+ m_log.DebugFormat("[SCRIPT STATE]: Adding state for oldID {0}", itemid);
m_savedScriptState.Add(itemid, node.InnerXml);
}
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 024bdc9..95cd26f 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -500,7 +500,7 @@ namespace OpenSim.Region.Framework.Scenes
// This is necessary so that TaskInventoryItem parent ids correctly reference the new uuid of this part
if (Inventory != null)
- Inventory.ResetInventoryIDs();
+ Inventory.ResetObjectID();
}
}
@@ -2763,6 +2763,7 @@ namespace OpenSim.Region.Framework.Scenes
UUID = UUID.Random();
LinkNum = linkNum;
LocalId = 0;
+ Inventory.ResetInventoryIDs();
}
///
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 53ddb5d..fbaa7d4 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -140,6 +140,34 @@ namespace OpenSim.Region.Framework.Scenes
}
}
+ public void ResetObjectID()
+ {
+ m_items.LockItemsForWrite(true);
+
+ if (Items.Count == 0)
+ {
+ m_items.LockItemsForWrite(false);
+ return;
+ }
+
+ HasInventoryChanged = true;
+ if (m_part.ParentGroup != null)
+ {
+ m_part.ParentGroup.HasGroupChanged = true;
+ }
+
+ IList items = new List(Items.Values);
+ Items.Clear();
+
+ foreach (TaskInventoryItem item in items)
+ {
+ item.ParentPartID = m_part.UUID;
+ item.ParentID = m_part.UUID;
+ Items.Add(item.ItemID, item);
+ }
+ m_items.LockItemsForWrite(false);
+ }
+
///
/// Change every item in this inventory to a new owner.
///
--
cgit v1.1
From 670357367e825f194b7993871f1e42af41172a09 Mon Sep 17 00:00:00 2001
From: root
Date: Thu, 16 Sep 2010 23:26:53 +0200
Subject: Removing debug
---
OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 1 -
1 file changed, 1 deletion(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 833c9d3..f9a8d41 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -511,7 +511,6 @@ namespace OpenSim.Region.Framework.Scenes
if (node.Attributes["UUID"] != null)
{
UUID itemid = new UUID(node.Attributes["UUID"].Value);
- m_log.DebugFormat("[SCRIPT STATE]: Adding state for oldID {0}", itemid);
m_savedScriptState.Add(itemid, node.InnerXml);
}
}
--
cgit v1.1
From e3f153370566e0fd4b6f63a066e016cb52dcdf62 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 17 Sep 2010 01:21:28 +0100
Subject: Fix build break by replacing Items.LockItemsForWrite() with lock
(Items) {}
---
.../Framework/Scenes/SceneObjectPartInventory.cs | 43 +++++++++++-----------
1 file changed, 21 insertions(+), 22 deletions(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index fbaa7d4..7ba30fc 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -142,30 +142,29 @@ namespace OpenSim.Region.Framework.Scenes
public void ResetObjectID()
{
- m_items.LockItemsForWrite(true);
-
- if (Items.Count == 0)
- {
- m_items.LockItemsForWrite(false);
- return;
- }
-
- HasInventoryChanged = true;
- if (m_part.ParentGroup != null)
- {
- m_part.ParentGroup.HasGroupChanged = true;
- }
-
- IList items = new List(Items.Values);
- Items.Clear();
-
- foreach (TaskInventoryItem item in items)
+ lock (Items)
{
- item.ParentPartID = m_part.UUID;
- item.ParentID = m_part.UUID;
- Items.Add(item.ItemID, item);
+ if (Items.Count == 0)
+ {
+ return;
+ }
+
+ HasInventoryChanged = true;
+ if (m_part.ParentGroup != null)
+ {
+ m_part.ParentGroup.HasGroupChanged = true;
+ }
+
+ IList items = new List(Items.Values);
+ Items.Clear();
+
+ foreach (TaskInventoryItem item in items)
+ {
+ item.ParentPartID = m_part.UUID;
+ item.ParentID = m_part.UUID;
+ Items.Add(item.ItemID, item);
+ }
}
- m_items.LockItemsForWrite(false);
}
///
--
cgit v1.1