Revert "Merging in diva's locking fixes"

This reverts commit 832cc68513.
This commit is contained in:
Melanie
2009-10-07 01:44:36 +01:00
parent 312438f145
commit 9618c196c2
12 changed files with 180 additions and 215 deletions

View File

@@ -122,13 +122,12 @@ namespace OpenSim.Region.Framework.Scenes
public bool InventoryDeQueueAndDelete()
{
DeleteToInventoryHolder x = null;
int left = 0;
try
{
lock (m_inventoryDeletes)
{
left = m_inventoryDeletes.Count;
int left = m_inventoryDeletes.Count;
if (left > 0)
{
x = m_inventoryDeletes.Dequeue();
@@ -137,26 +136,23 @@ namespace OpenSim.Region.Framework.Scenes
m_inventoryDeletes.Enqueue(x);
return true;
}
}
}
if (left > 0)
{
m_log.DebugFormat(
"[SCENE]: Sending object to user's inventory, {0} item(s) remaining.", left);
try
{
m_scene.DeleteToInventory(x.action, x.folderID, x.objectGroup, x.remoteClient);
if (x.permissionToDelete)
m_scene.DeleteSceneObject(x.objectGroup, false);
m_log.DebugFormat(
"[SCENE]: Sending object to user's inventory, {0} item(s) remaining.", left);
try
{
m_scene.DeleteToInventory(x.action, x.folderID, x.objectGroup, x.remoteClient);
if (x.permissionToDelete)
m_scene.DeleteSceneObject(x.objectGroup, false);
}
catch (Exception e)
{
m_log.DebugFormat("Exception background sending object: " + e);
}
return true;
}
catch (Exception e)
{
m_log.DebugFormat("Exception background sending object: " + e);
}
return true;
}
}
catch (Exception e)

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;
}