Revert "Rewrote parts of the code that were double-locking different objects. This is about half of the code base reviewed."

This reverts commit e992ca0255.
This commit is contained in:
Melanie
2009-10-07 01:45:49 +01:00
parent e992ca0255
commit 89d23a1fa2
9 changed files with 174 additions and 209 deletions

View File

@@ -297,44 +297,34 @@ namespace OpenSim.Region.Framework.Scenes
sceneObject.AttachToScene(m_parentScene);
List<SceneObjectPart> parts = null;
bool found = false;
lock (sceneObject)
{
if (!Entities.ContainsKey(sceneObject.UUID))
{
found = true;
Entities.Add(sceneObject);
m_numPrim += sceneObject.Children.Count;
if (attachToBackup)
sceneObject.AttachToBackup();
parts = new List<SceneObjectPart>(sceneObject.Children.Values);
}
}
if (found)
{
lock (m_dictionary_lock)
{
SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject;
SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject;
foreach (SceneObjectPart part in parts)
if (OnObjectCreate != null)
OnObjectCreate(sceneObject);
lock (m_dictionary_lock)
{
SceneObjectGroupsByFullID[part.UUID] = sceneObject;
SceneObjectGroupsByLocalID[part.LocalId] = sceneObject;
SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject;
SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject;
foreach (SceneObjectPart part in sceneObject.Children.Values)
{
SceneObjectGroupsByFullID[part.UUID] = sceneObject;
SceneObjectGroupsByLocalID[part.LocalId] = sceneObject;
}
}
return true;
}
if (OnObjectCreate != null)
OnObjectCreate(sceneObject);
return true;
}
return false;
}