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
initPrimProperties = FullSetPrimProperties;
lock (m_primSyncInfoLock)
{
foreach (SceneObjectPartSyncProperties property in initPrimProperties)
{
Object initValue = GetSOPPropertyValue(part, property);
@ -5197,6 +5199,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
m_propertiesSyncInfo.Add(property, syncInfo);
}
}
}
/// <summary>
/// Decode PropertySyncInfo for each property and insert into m_propertiesSyncInfo.
@ -5204,6 +5207,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
/// </summary>
/// <param name="primSyncInfoData"></param>
private void InitPropertiesSyncInfoFromOSDMap(OSDMap primSyncInfoData)
{
lock (m_primSyncInfoLock)
{
m_propertiesSyncInfo.Clear();
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
private bool CompareHashedValue_UpdateByLocal(SceneObjectPart part, SceneObjectPartSyncProperties property, long lastUpdateTS, string syncID)