diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEngineBase.cs | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEngineBase.cs b/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEngineBase.cs index c0a37a0..e6f5210 100644 --- a/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEngineBase.cs +++ b/OpenSim/ApplicationPlugins/ScriptEngine/RegionScriptEngineBase.cs | |||
@@ -72,21 +72,25 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine | |||
72 | foreach (string c in ComponentList) | 72 | foreach (string c in ComponentList) |
73 | { | 73 | { |
74 | m_log.Info("[" + Name + "]: Loading: " + c); | 74 | m_log.Info("[" + Name + "]: Loading: " + c); |
75 | try | 75 | lock (Components) |
76 | { | ||
77 | if (ComponentRegistry.providers.ContainsKey(c)) | ||
78 | Components.Add(Activator.CreateInstance(ComponentRegistry.providers[c]) as ComponentBase); | ||
79 | else | ||
80 | m_log.Error("[" + Name + "]: Component \"" + c + "\" not found, can not load"); | ||
81 | } catch (Exception ex) | ||
82 | { | 76 | { |
83 | m_log.Error("[" + Name + "]: Exception loading \"" + c + "\": " + ex.ToString()); | 77 | try |
78 | { | ||
79 | if (ComponentRegistry.providers.ContainsKey(c)) | ||
80 | Components.Add(Activator.CreateInstance(ComponentRegistry.providers[c]) as ComponentBase); | ||
81 | else | ||
82 | m_log.Error("[" + Name + "]: Component \"" + c + "\" not found, can not load"); | ||
83 | } | ||
84 | catch (Exception ex) | ||
85 | { | ||
86 | m_log.Error("[" + Name + "]: Exception loading \"" + c + "\": " + ex.ToString()); | ||
87 | } | ||
84 | } | 88 | } |
85 | } | 89 | } |
86 | 90 | ||
87 | 91 | ||
88 | // Run Initialize on all our providers, hand over a reference of ourself. | 92 | // Run Initialize on all our providers, hand over a reference of ourself. |
89 | foreach (ComponentBase p in Components) | 93 | foreach (ComponentBase p in Components.ToArray()) |
90 | { | 94 | { |
91 | try | 95 | try |
92 | { | 96 | { |
@@ -94,12 +98,17 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine | |||
94 | } | 98 | } |
95 | catch (Exception ex) | 99 | catch (Exception ex) |
96 | { | 100 | { |
97 | m_log.Error("[" + Name + "]: Error initializing \"" + p.GetType().FullName + "\": " + ex.ToString()); | 101 | lock (Components) |
98 | Components.Remove(p); | 102 | { |
103 | m_log.Error("[" + Name + "]: Error initializing \"" + p.GetType().FullName + "\": " + | ||
104 | ex.ToString()); | ||
105 | if (Components.Contains(p)) | ||
106 | Components.Remove(p); | ||
107 | } | ||
99 | } | 108 | } |
100 | } | 109 | } |
101 | // All modules has been initialized, call Start() on them. | 110 | // All modules has been initialized, call Start() on them. |
102 | foreach (ComponentBase p in Components) | 111 | foreach (ComponentBase p in Components.ToArray()) |
103 | { | 112 | { |
104 | try | 113 | try |
105 | { | 114 | { |
@@ -107,8 +116,12 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine | |||
107 | } | 116 | } |
108 | catch (Exception ex) | 117 | catch (Exception ex) |
109 | { | 118 | { |
110 | m_log.Error("[" + Name + "]: Error starting \"" + p.GetType().FullName + "\": " + ex.ToString()); | 119 | lock (Components) |
111 | Components.Remove(p); | 120 | { |
121 | m_log.Error("[" + Name + "]: Error starting \"" + p.GetType().FullName + "\": " + ex.ToString()); | ||
122 | if (Components.Contains(p)) | ||
123 | Components.Remove(p); | ||
124 | } | ||
112 | } | 125 | } |
113 | } | 126 | } |
114 | 127 | ||
@@ -149,7 +162,7 @@ namespace OpenSim.ApplicationPlugins.ScriptEngine | |||
149 | PreClose(); | 162 | PreClose(); |
150 | 163 | ||
151 | // Then Call Close() on all components | 164 | // Then Call Close() on all components |
152 | foreach (ComponentBase p in Components) | 165 | foreach (ComponentBase p in Components.ToArray()) |
153 | { | 166 | { |
154 | try | 167 | try |
155 | { | 168 | { |