Add locking on m_primSyncInfoLock in InitPropertiesBySync and InitPropertiesSyncInfoFromOSDMap.

dsg
Huaiyu (Kitty) Liu 2011-05-03 13:54:59 -07:00
parent f8bf6c2cc4
commit eeb09f33e3
1 changed files with 20 additions and 14 deletions

View File

@ -5190,6 +5190,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
else else
initPrimProperties = FullSetPrimProperties; initPrimProperties = FullSetPrimProperties;
lock (m_primSyncInfoLock)
{
foreach (SceneObjectPartSyncProperties property in initPrimProperties) foreach (SceneObjectPartSyncProperties property in initPrimProperties)
{ {
Object initValue = GetSOPPropertyValue(part, property); Object initValue = GetSOPPropertyValue(part, property);
@ -5197,6 +5199,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
m_propertiesSyncInfo.Add(property, syncInfo); m_propertiesSyncInfo.Add(property, syncInfo);
} }
} }
}
/// <summary> /// <summary>
/// Decode PropertySyncInfo for each property and insert into m_propertiesSyncInfo. /// Decode PropertySyncInfo for each property and insert into m_propertiesSyncInfo.
@ -5204,6 +5207,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
/// </summary> /// </summary>
/// <param name="primSyncInfoData"></param> /// <param name="primSyncInfoData"></param>
private void InitPropertiesSyncInfoFromOSDMap(OSDMap primSyncInfoData) private void InitPropertiesSyncInfoFromOSDMap(OSDMap primSyncInfoData)
{
lock (m_primSyncInfoLock)
{ {
m_propertiesSyncInfo.Clear(); m_propertiesSyncInfo.Clear();
foreach (SceneObjectPartSyncProperties property in FullSetPrimProperties) foreach (SceneObjectPartSyncProperties property in FullSetPrimProperties)
@ -5220,6 +5225,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
} }
} }
} }
}
//Assumption: the caller already locks the access lock, and no need to lock here //Assumption: the caller already locks the access lock, and no need to lock here
private bool CompareHashedValue_UpdateByLocal(SceneObjectPart part, SceneObjectPartSyncProperties property, long lastUpdateTS, string syncID) private bool CompareHashedValue_UpdateByLocal(SceneObjectPart part, SceneObjectPartSyncProperties property, long lastUpdateTS, string syncID)