From 6cb8b01bef21b71857a1fa7438c1529db489bf4c Mon Sep 17 00:00:00 2001 From: "Huaiyu (Kitty) Liu" Date: Mon, 7 Feb 2011 14:15:33 -0800 Subject: [PATCH] Added m_syncEnabled in SceneObjectPart to guard again modifying any syncinfo (timestamp, etc) while deserializing and building SOP/SOG out of sync message. --- .../Framework/Scenes/SceneObjectPart.cs | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 8f63e69e6b..af9d853f16 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -776,7 +776,7 @@ namespace OpenSim.Region.Framework.Scenes set { SetScriptAccessPin(value); - UpdateBucketSyncInfo("ScriptAccessPin"); + //UpdateBucketSyncInfo("ScriptAccessPin"); //m_scriptAccessPin = (int)value; } } @@ -1207,7 +1207,7 @@ namespace OpenSim.Region.Framework.Scenes set { SetAcceleration(value); - UpdateBucketSyncInfo("Acceleration"); + //UpdateBucketSyncInfo("Acceleration"); //m_acceleration = value; } } @@ -1223,7 +1223,7 @@ namespace OpenSim.Region.Framework.Scenes set { SetDescription(value); - UpdateBucketSyncInfo("Description"); + //UpdateBucketSyncInfo("Description"); /* m_description = value; PhysicsActor actor = PhysActor; @@ -1254,7 +1254,7 @@ namespace OpenSim.Region.Framework.Scenes set { SetColor(value); - UpdateBucketSyncInfo("Color"); + //UpdateBucketSyncInfo("Color"); //m_color = value; /* ScheduleFullUpdate() need not be called b/c after @@ -1283,7 +1283,7 @@ namespace OpenSim.Region.Framework.Scenes set { SetText(value, false); - UpdateBucketSyncInfo("Text"); + //UpdateBucketSyncInfo("Text"); //m_text = value; } } @@ -1301,7 +1301,7 @@ namespace OpenSim.Region.Framework.Scenes set { SetSitName(value); - UpdateBucketSyncInfo("SitName"); + //UpdateBucketSyncInfo("SitName"); //m_sitName = value; } } @@ -1317,7 +1317,7 @@ namespace OpenSim.Region.Framework.Scenes set { SetTouchName(value); - UpdateBucketSyncInfo("TouchName"); + //UpdateBucketSyncInfo("TouchName"); //m_touchName = value; } } @@ -5861,6 +5861,10 @@ namespace OpenSim.Region.Framework.Scenes //private static Dictionary m_bucketUpdateProcessors = new Dictionary(); private Dictionary m_bucketUpdateProcessors = new Dictionary(); + //Define this as a guard to not to fill in any sync info when not desired, i.e. while de-serializing and building SOP and SOG, where + //property set functions will be called and might trigger UpdateBucketSyncInfo() if not guarded carefully. + private bool m_syncEnabled = false; + public static void InitializeBucketInfo(Dictionary propertyBucketMap, List bucketNames, string actorID) { m_primPropertyBucketMap = propertyBucketMap; @@ -5988,6 +5992,8 @@ namespace OpenSim.Region.Framework.Scenes RegisterBucketUpdateProcessor(); m_BucketUpdateProcessorRegistered = true; } + + m_syncEnabled = true; } /// @@ -5996,7 +6002,7 @@ namespace OpenSim.Region.Framework.Scenes /// Name of the property. Make sure the spelling is consistent with what are defined in PropertyList public void UpdateBucketSyncInfo(string propertyName) { - if (m_bucketSyncInfoList != null && m_bucketSyncInfoList.Count>0) + if (m_syncEnabled && m_bucketSyncInfoList != null && m_bucketSyncInfoList.Count>0) { //int bucketIndex = m_primPropertyBucketMap[propertyName]; string bucketName = m_primPropertyBucketMap[propertyName];