diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/XEngine')
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index d4c1727..916e27f 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -769,8 +769,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
769 | } | 769 | } |
770 | } | 770 | } |
771 | 771 | ||
772 | |||
773 | |||
774 | ScriptInstance instance = null; | 772 | ScriptInstance instance = null; |
775 | // Create the object record | 773 | // Create the object record |
776 | lockScriptsForRead(true); | 774 | lockScriptsForRead(true); |
@@ -952,7 +950,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
952 | 950 | ||
953 | CleanAssemblies(); | 951 | CleanAssemblies(); |
954 | 952 | ||
955 | |||
956 | ScriptRemoved handlerScriptRemoved = OnScriptRemoved; | 953 | ScriptRemoved handlerScriptRemoved = OnScriptRemoved; |
957 | if (handlerScriptRemoved != null) | 954 | if (handlerScriptRemoved != null) |
958 | handlerScriptRemoved(itemID); | 955 | handlerScriptRemoved(itemID); |
@@ -1086,26 +1083,33 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1086 | public bool PostObjectEvent(uint localID, EventParams p) | 1083 | public bool PostObjectEvent(uint localID, EventParams p) |
1087 | { | 1084 | { |
1088 | bool result = false; | 1085 | bool result = false; |
1089 | 1086 | List<UUID> uuids = null; | |
1087 | |||
1090 | lock (m_PrimObjects) | 1088 | lock (m_PrimObjects) |
1091 | { | 1089 | { |
1092 | if (!m_PrimObjects.ContainsKey(localID)) | 1090 | if (!m_PrimObjects.ContainsKey(localID)) |
1093 | return false; | 1091 | return false; |
1094 | 1092 | ||
1095 | 1093 | uuids = m_PrimObjects[localID]; | |
1096 | foreach (UUID itemID in m_PrimObjects[localID]) | 1094 | } |
1095 | |||
1096 | foreach (UUID itemID in uuids) | ||
1097 | { | ||
1098 | IScriptInstance instance = null; | ||
1099 | try | ||
1097 | { | 1100 | { |
1098 | if (m_Scripts.ContainsKey(itemID)) | 1101 | if (m_Scripts.ContainsKey(itemID)) |
1099 | { | 1102 | instance = m_Scripts[itemID]; |
1100 | IScriptInstance instance = m_Scripts[itemID]; | 1103 | } |
1101 | if (instance != null) | 1104 | catch { /* ignore race conditions */ } |
1102 | { | 1105 | |
1103 | instance.PostEvent(p); | 1106 | if (instance != null) |
1104 | result = true; | 1107 | { |
1105 | } | 1108 | instance.PostEvent(p); |
1106 | } | 1109 | result = true; |
1107 | } | 1110 | } |
1108 | } | 1111 | } |
1112 | |||
1109 | return result; | 1113 | return result; |
1110 | } | 1114 | } |
1111 | 1115 | ||