mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 17:05:55 +08:00
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:
@@ -442,46 +442,42 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends
|
||||
|
||||
private ScenePresence GetRootPresenceFromAgentID(UUID AgentID)
|
||||
{
|
||||
List<Scene> scenes = null;
|
||||
lock (m_scenes)
|
||||
scenes = new List<Scene>(m_scenes.Values);
|
||||
|
||||
ScenePresence returnAgent = null;
|
||||
ScenePresence queryagent = null;
|
||||
foreach (Scene scene in scenes)
|
||||
lock (m_scenes)
|
||||
{
|
||||
queryagent = scene.GetScenePresence(AgentID);
|
||||
if (queryagent != null)
|
||||
ScenePresence queryagent = null;
|
||||
foreach (Scene scene in m_scenes.Values)
|
||||
{
|
||||
if (!queryagent.IsChildAgent)
|
||||
queryagent = scene.GetScenePresence(AgentID);
|
||||
if (queryagent != null)
|
||||
{
|
||||
if (!queryagent.IsChildAgent)
|
||||
{
|
||||
returnAgent = queryagent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return returnAgent;
|
||||
}
|
||||
|
||||
private ScenePresence GetAnyPresenceFromAgentID(UUID AgentID)
|
||||
{
|
||||
ScenePresence returnAgent = null;
|
||||
lock (m_scenes)
|
||||
{
|
||||
ScenePresence queryagent = null;
|
||||
foreach (Scene scene in m_scenes.Values)
|
||||
{
|
||||
queryagent = scene.GetScenePresence(AgentID);
|
||||
if (queryagent != null)
|
||||
{
|
||||
returnAgent = queryagent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return returnAgent;
|
||||
}
|
||||
|
||||
private ScenePresence GetAnyPresenceFromAgentID(UUID AgentID)
|
||||
{
|
||||
List<Scene> scenes = null;
|
||||
lock (m_scenes)
|
||||
scenes = new List<Scene>(m_scenes.Values);
|
||||
|
||||
ScenePresence returnAgent = null;
|
||||
ScenePresence queryagent = null;
|
||||
foreach (Scene scene in m_scenes.Values)
|
||||
{
|
||||
queryagent = scene.GetScenePresence(AgentID);
|
||||
if (queryagent != null)
|
||||
{
|
||||
returnAgent = queryagent;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return returnAgent;
|
||||
}
|
||||
|
||||
|
||||
@@ -290,14 +290,13 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
||||
|
||||
// get the agent. This should work every time, as we just got a packet from it
|
||||
ScenePresence agent = null;
|
||||
List<Scene> scenes = null;
|
||||
lock (m_Scenes)
|
||||
scenes = new List<Scene>(m_Scenes);
|
||||
|
||||
foreach (Scene scene in scenes)
|
||||
{
|
||||
agent = scene.GetScenePresence(agentID);
|
||||
if (agent != null) break;
|
||||
foreach (Scene scene in m_Scenes)
|
||||
{
|
||||
agent = scene.GetScenePresence(agentID);
|
||||
if (agent != null) break;
|
||||
}
|
||||
}
|
||||
|
||||
// just to be paranoid...
|
||||
|
||||
@@ -111,17 +111,16 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Transfer
|
||||
|
||||
private Scene FindClientScene(UUID agentId)
|
||||
{
|
||||
List<Scene> scenes = null;
|
||||
lock (m_Scenelist)
|
||||
scenes = new List<Scene>(m_Scenelist);
|
||||
|
||||
foreach (Scene scene in scenes)
|
||||
{
|
||||
ScenePresence presence = scene.GetScenePresence(agentId);
|
||||
if (presence != null)
|
||||
foreach (Scene scene in m_Scenelist)
|
||||
{
|
||||
if (!presence.IsChildAgent)
|
||||
return scene;
|
||||
ScenePresence presence = scene.GetScenePresence(agentId);
|
||||
if (presence != null)
|
||||
{
|
||||
if (!presence.IsChildAgent)
|
||||
return scene;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -198,20 +198,19 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
|
||||
|
||||
private SceneObjectPart findPrim(UUID objectID, out string ObjectRegionName)
|
||||
{
|
||||
List<Scene> scenes = null;
|
||||
lock (m_Scenes)
|
||||
scenes = new List<Scene>(m_Scenes.Values);
|
||||
|
||||
foreach (Scene s in scenes)
|
||||
{
|
||||
SceneObjectPart part = s.GetSceneObjectPart(objectID);
|
||||
if (part != null)
|
||||
foreach (Scene s in m_Scenes.Values)
|
||||
{
|
||||
ObjectRegionName = s.RegionInfo.RegionName;
|
||||
uint localX = (s.RegionInfo.RegionLocX * (int)Constants.RegionSize);
|
||||
uint localY = (s.RegionInfo.RegionLocY * (int)Constants.RegionSize);
|
||||
ObjectRegionName = ObjectRegionName + " (" + localX + ", " + localY + ")";
|
||||
return part;
|
||||
SceneObjectPart part = s.GetSceneObjectPart(objectID);
|
||||
if (part != null)
|
||||
{
|
||||
ObjectRegionName = s.RegionInfo.RegionName;
|
||||
uint localX = (s.RegionInfo.RegionLocX * (int)Constants.RegionSize);
|
||||
uint localY = (s.RegionInfo.RegionLocY * (int)Constants.RegionSize);
|
||||
ObjectRegionName = ObjectRegionName + " (" + localX + ", " + localY + ")";
|
||||
return part;
|
||||
}
|
||||
}
|
||||
}
|
||||
ObjectRegionName = string.Empty;
|
||||
@@ -364,7 +363,6 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
|
||||
public Email GetNextEmail(UUID objectID, string sender, string subject)
|
||||
{
|
||||
List<Email> queue = null;
|
||||
List<UUID> removal = new List<UUID>();
|
||||
|
||||
lock (m_LastGetEmailCall)
|
||||
{
|
||||
@@ -377,6 +375,7 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
|
||||
|
||||
// Hopefully this isn't too time consuming. If it is, we can always push it into a worker thread.
|
||||
DateTime now = DateTime.Now;
|
||||
List<UUID> removal = new List<UUID>();
|
||||
foreach (UUID uuid in m_LastGetEmailCall.Keys)
|
||||
{
|
||||
if ((now - m_LastGetEmailCall[uuid]) > m_QueueTimeout)
|
||||
@@ -384,15 +383,15 @@ namespace OpenSim.Region.CoreModules.Scripting.EmailModules
|
||||
removal.Add(uuid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (UUID remove in removal)
|
||||
{
|
||||
lock (m_LastGetEmailCall)
|
||||
foreach (UUID remove in removal)
|
||||
{
|
||||
m_LastGetEmailCall.Remove(remove);
|
||||
|
||||
lock (m_MailQueues)
|
||||
m_MailQueues.Remove(remove);
|
||||
lock (m_MailQueues)
|
||||
{
|
||||
m_MailQueues.Remove(remove);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lock (m_MailQueues)
|
||||
|
||||
@@ -187,16 +187,14 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
LandData newData = data.Copy();
|
||||
newData.LocalID = local_id;
|
||||
|
||||
ILandObject land = null;
|
||||
lock (m_landList)
|
||||
{
|
||||
if (m_landList.ContainsKey(local_id))
|
||||
{
|
||||
m_landList[local_id].LandData = newData;
|
||||
land = m_landList[local_id];
|
||||
m_scene.EventManager.TriggerLandObjectUpdated((uint)local_id, m_landList[local_id]);
|
||||
}
|
||||
}
|
||||
m_scene.EventManager.TriggerLandObjectUpdated((uint)local_id, land);
|
||||
}
|
||||
|
||||
public bool AllowedForcefulBans
|
||||
@@ -506,7 +504,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
/// <param name="local_id">Land.localID of the peice of land to remove.</param>
|
||||
public void removeLandObject(int local_id)
|
||||
{
|
||||
UUID id = UUID.Zero;
|
||||
lock (m_landList)
|
||||
{
|
||||
for (int x = 0; x < 64; x++)
|
||||
@@ -523,10 +520,9 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
}
|
||||
}
|
||||
|
||||
id = m_landList[local_id].LandData.GlobalID;
|
||||
m_scene.EventManager.TriggerLandObjectRemoved(m_landList[local_id].LandData.GlobalID);
|
||||
m_landList.Remove(local_id);
|
||||
}
|
||||
m_scene.EventManager.TriggerLandObjectRemoved(id);
|
||||
}
|
||||
|
||||
private void performFinalLandJoin(ILandObject master, ILandObject slave)
|
||||
|
||||
Reference in New Issue
Block a user