From ec494275a2eead0552f2f9819ceedbb4297bd7b5 Mon Sep 17 00:00:00 2001
From: Tedd Hansen
Date: Sun, 21 Sep 2008 01:09:54 +0000
Subject: More locks, try's and disable some things in SEC - maybe it won't
 crash now. :)

---
 .../ScriptEngine/ComponentLoader.cs                 | 10 ++++++++--
 .../ScriptEngine/RegionScriptEngineBase.cs          | 21 ++++++++++++---------
 .../ScriptEngine/RegionScriptEnginePlugin.cs        | 10 +++++++---
 3 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs b/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs
index ab39568..c89da81 100644
--- a/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs
+++ b/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs
@@ -72,13 +72,19 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine
                                 {
                                     // We have found an type which is derived from ProdiverBase, add it to provider list
                                     m_log.InfoFormat("[ScriptEngine]: Adding component: {0}", componentType.Name);
-                                    ComponentRegistry.providers.Add(componentType.Name, componentType);
+                                    lock (ComponentRegistry.providers)
+                                    {
+                                        ComponentRegistry.providers.Add(componentType.Name, componentType);
+                                    }
                                 }
                                 if (componentType.IsSubclassOf(typeof(RegionScriptEngineBase)))
                                 {
                                     // We have found an type which is derived from RegionScriptEngineBase, add it to engine list
                                     m_log.InfoFormat("[ScriptEngine]: Adding script engine: {0}", componentType.Name);
-                                    ComponentRegistry.scriptEngines.Add(componentType.Name, componentType);
+                                    lock (ComponentRegistry.scriptEngines)
+                                    {
+                                        ComponentRegistry.scriptEngines.Add(componentType.Name, componentType);
+                                    }
                                 }
                             }
                         }
diff --git a/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEngineBase.cs b/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEngineBase.cs
index e6f5210..ec676f2 100644
--- a/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEngineBase.cs
+++ b/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEngineBase.cs
@@ -74,16 +74,19 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine
                 m_log.Info("[" + Name + "]: Loading: " + c);
                 lock (Components)
                 {
-                    try
+                    lock (ComponentRegistry.providers)
                     {
-                        if (ComponentRegistry.providers.ContainsKey(c))
-                            Components.Add(Activator.CreateInstance(ComponentRegistry.providers[c]) as ComponentBase);
-                        else
-                            m_log.Error("[" + Name + "]: Component \"" + c + "\" not found, can not load");
-                    }
-                    catch (Exception ex)
-                    {
-                        m_log.Error("[" + Name + "]: Exception loading \"" + c + "\": " + ex.ToString());
+                        try
+                        {
+                            if (ComponentRegistry.providers.ContainsKey(c))
+                                Components.Add(Activator.CreateInstance(ComponentRegistry.providers[c]) as ComponentBase);
+                            else
+                                m_log.Error("[" + Name + "]: Component \"" + c + "\" not found, can not load");
+                        }
+                        catch (Exception ex)
+                        {
+                            m_log.Error("[" + Name + "]: Exception loading \"" + c + "\": " + ex.ToString());
+                        }
                     }
                 }
             }
diff --git a/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEnginePlugin.cs b/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEnginePlugin.cs
index c4f4bbe..0851fc3 100644
--- a/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEnginePlugin.cs
+++ b/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEnginePlugin.cs
@@ -43,13 +43,17 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine
         public RegionScriptEngineBase scriptEngine;
         public void Initialise(Scene scene, IConfigSource source)
         {
+            return;
             // New region is being created
             // Create a new script engine
             try
             {
-                scriptEngine =
-                    Activator.CreateInstance(ComponentRegistry.scriptEngines[tempScriptEngineName]) as
-                    RegionScriptEngineBase;
+                lock (ComponentRegistry.scriptEngines)
+                {
+                    scriptEngine =
+                        Activator.CreateInstance(ComponentRegistry.scriptEngines[tempScriptEngineName]) as
+                        RegionScriptEngineBase;
+                }
                 scriptEngine.Initialize(scene, source);
             }
             catch (Exception ex)
-- 
cgit v1.1