diff --git a/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs b/OpenSim/ApplicationPlugins/ScriptEngine/ComponentLoader.cs index ab39568413..c89da81fca 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 e6f52100a8..ec676f29fb 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 c4f4bbed5c..0851fc3414 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)