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