mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 17:05:55 +08:00
Revert "Merging in diva's locking fixes"
This reverts commit 832cc68513.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user