mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 09:45:47 +08:00
First pass at cleaning up thread safety in EntityManager and SceneGraph
This commit is contained in:
@@ -1029,29 +1029,30 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (ScriptEngine)
|
||||
{
|
||||
m_log.Info("Stopping all Scripts in Scene");
|
||||
foreach (EntityBase ent in Entities)
|
||||
|
||||
EntityBase[] entities = Entities.GetEntities();
|
||||
foreach (EntityBase ent in entities)
|
||||
{
|
||||
if (ent is SceneObjectGroup)
|
||||
{
|
||||
((SceneObjectGroup) ent).RemoveScriptInstances(false);
|
||||
}
|
||||
((SceneObjectGroup)ent).RemoveScriptInstances(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.Info("Starting all Scripts in Scene");
|
||||
lock (Entities)
|
||||
|
||||
EntityBase[] entities = Entities.GetEntities();
|
||||
foreach (EntityBase ent in entities)
|
||||
{
|
||||
foreach (EntityBase ent in Entities)
|
||||
if (ent is SceneObjectGroup)
|
||||
{
|
||||
if (ent is SceneObjectGroup)
|
||||
{
|
||||
((SceneObjectGroup)ent).CreateScriptInstances(0, false, DefaultScriptEngine, 0);
|
||||
((SceneObjectGroup)ent).ResumeScripts();
|
||||
}
|
||||
SceneObjectGroup sog = (SceneObjectGroup)ent;
|
||||
sog.CreateScriptInstances(0, false, DefaultScriptEngine, 0);
|
||||
sog.ResumeScripts();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_scripts_enabled = !ScriptEngine;
|
||||
m_log.Info("[TOTEDD]: Here is the method to trigger disabling of the scripting engine");
|
||||
}
|
||||
@@ -1098,7 +1099,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
shuttingdown = true;
|
||||
|
||||
m_log.Debug("[SCENE]: Persisting changed objects");
|
||||
List<EntityBase> entities = GetEntities();
|
||||
EntityBase[] entities = GetEntities();
|
||||
foreach (EntityBase entity in entities)
|
||||
{
|
||||
if (!entity.IsDeleted && entity is SceneObjectGroup && ((SceneObjectGroup)entity).HasGroupChanged)
|
||||
@@ -2037,8 +2038,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
lock (Entities)
|
||||
{
|
||||
ICollection<EntityBase> entities = new List<EntityBase>(Entities);
|
||||
|
||||
EntityBase[] entities = Entities.GetEntities();
|
||||
foreach (EntityBase e in entities)
|
||||
{
|
||||
if (e is SceneObjectGroup)
|
||||
@@ -3977,9 +3977,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// </summary>
|
||||
public void ForceClientUpdate()
|
||||
{
|
||||
List<EntityBase> EntityList = GetEntities();
|
||||
|
||||
foreach (EntityBase ent in EntityList)
|
||||
EntityBase[] entityList = GetEntities();
|
||||
foreach (EntityBase ent in entityList)
|
||||
{
|
||||
if (ent is SceneObjectGroup)
|
||||
{
|
||||
@@ -3997,9 +3996,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
m_log.Debug("Searching for Primitive: '" + cmdparams[2] + "'");
|
||||
|
||||
List<EntityBase> EntityList = GetEntities();
|
||||
|
||||
foreach (EntityBase ent in EntityList)
|
||||
EntityBase[] entityList = GetEntities();
|
||||
foreach (EntityBase ent in entityList)
|
||||
{
|
||||
if (ent is SceneObjectGroup)
|
||||
{
|
||||
@@ -4368,7 +4366,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
/// will not affect the original list of objects in the scene.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<EntityBase> GetEntities()
|
||||
public EntityBase[] GetEntities()
|
||||
{
|
||||
return m_sceneGraph.GetEntities();
|
||||
}
|
||||
@@ -4402,9 +4400,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
public void CleanTempObjects()
|
||||
{
|
||||
List<EntityBase> objs = GetEntities();
|
||||
|
||||
foreach (EntityBase obj in objs)
|
||||
EntityBase[] entities = GetEntities();
|
||||
foreach (EntityBase obj in entities)
|
||||
{
|
||||
if (obj is SceneObjectGroup)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user