From 69fb1faa030ad199430a34f71ce18bc4b12f5c16 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 28 Apr 2011 22:59:12 +0100 Subject: [PATCH] Stop CHANGED_INVENTORY firing twice if a notecard is edited in prim. Addresses http://opensimulator.org/mantis/view.php?id=5444 Fix is to stop the asset transaction calling UpdateInventoryItem() since the caller is doing it anyway, which is more correct. This did not effect scripts. --- .../Agent/AssetTransaction/AgentAssetsTransactions.cs | 9 +++++---- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 4 ++++ .../Region/Framework/Scenes/SceneObjectPartInventory.cs | 7 +++++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs index 771038e1af..9d8082bd33 100644 --- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs +++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs @@ -41,8 +41,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction /// public class AgentAssetTransactions { -// private static readonly ILog m_log = LogManager.GetLogger( -// MethodBase.GetCurrentMethod().DeclaringType); +// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); // Fields private bool m_dumpAssetsToFile; @@ -149,6 +148,10 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction if (asset != null) { +// m_log.DebugFormat( +// "[AGENT ASSETS TRANSACTIONS]: Updating item {0} in {1} for transaction {2}", +// item.Name, part.Name, transactionID); + asset.FullID = UUID.Random(); asset.Name = item.Name; asset.Description = item.Description; @@ -156,8 +159,6 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction item.AssetID = asset.FullID; m_Scene.AssetService.Store(asset); - - part.Inventory.UpdateInventoryItem(item); } } } diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 0b2b01a944..b0f0de62bb 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs @@ -1430,6 +1430,10 @@ namespace OpenSim.Region.Framework.Scenes } else // Updating existing item with new perms etc { +// m_log.DebugFormat( +// "[PRIM INVENTORY]: Updating item {0} in {1} for UpdateTaskInventory()", +// currentItem.Name, part.Name); + IAgentAssetTransactions agentTransactions = this.RequestModuleInterface(); if (agentTransactions != null) { diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 3281eabd33..3b60f8c6da 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs @@ -693,8 +693,9 @@ namespace OpenSim.Region.Framework.Scenes { TaskInventoryItem it = GetInventoryItem(item.ItemID); if (it != null) - { +// m_log.DebugFormat("[PRIM INVENTORY]: Updating item {0} in {1}", item.Name, m_part.Name); + item.ParentID = m_part.UUID; item.ParentPartID = m_part.UUID; @@ -711,14 +712,16 @@ namespace OpenSim.Region.Framework.Scenes m_items[item.ItemID] = item; m_inventorySerial++; } - + if (fireScriptEvents) m_part.TriggerScriptChangedEvent(Changed.INVENTORY); + if (considerChanged) { HasInventoryChanged = true; m_part.ParentGroup.HasGroupChanged = true; } + return true; } else