diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/InnerScene.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/InnerScene.cs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index 02d0e20..7d21935 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs | |||
@@ -217,13 +217,26 @@ namespace OpenSim.Region.Environment.Scenes | |||
217 | } | 217 | } |
218 | } | 218 | } |
219 | 219 | ||
220 | /// <summary> | ||
221 | /// Process all pending updates | ||
222 | /// </summary> | ||
220 | internal void ProcessUpdates() | 223 | internal void ProcessUpdates() |
221 | { | 224 | { |
222 | lock (m_updateList) | 225 | lock (m_updateList) |
223 | { | 226 | { |
224 | for (int i = 0; i < m_updateList.Count; i++) | 227 | for (int i = 0; i < m_updateList.Count; i++) |
225 | { | 228 | { |
226 | m_updateList[i].Update(); | 229 | EntityBase entity = m_updateList[i]; |
230 | |||
231 | // Don't abort the whole update if one entity happens to give us an exception. | ||
232 | try | ||
233 | { | ||
234 | m_updateList[i].Update(); | ||
235 | } | ||
236 | catch (Exception e) | ||
237 | { | ||
238 | m_log.ErrorFormat("[INNERSCENE]: Failed to update {0}, {1} - {2}", entity.Name, entity.m_uuid, e); | ||
239 | } | ||
227 | } | 240 | } |
228 | m_updateList.Clear(); | 241 | m_updateList.Clear(); |
229 | } | 242 | } |