aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs1
-rw-r--r--OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs25
2 files changed, 26 insertions, 0 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
index 89d7045..5a9385f 100644
--- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
+++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventManager.cs
@@ -357,6 +357,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
357 357
358 public void control(uint localID, UUID itemID, UUID agentID, uint held, uint change) 358 public void control(uint localID, UUID itemID, UUID agentID, uint held, uint change)
359 { 359 {
360 if ((change == 0) && (myScriptEngine.m_EventQueueManager.CheckEeventQueueForEvent(localID,"control"))) return;
360 myScriptEngine.m_EventQueueManager.AddToScriptQueue(localID, itemID, "control", EventQueueManager.llDetectNull, new object[] { new LSL_Types.LSLString(agentID.ToString()), new LSL_Types.LSLInteger(held), new LSL_Types.LSLInteger(change)}); 361 myScriptEngine.m_EventQueueManager.AddToScriptQueue(localID, itemID, "control", EventQueueManager.llDetectNull, new object[] { new LSL_Types.LSLString(agentID.ToString()), new LSL_Types.LSLInteger(held), new LSL_Types.LSLInteger(change)});
361 } 362 }
362 363
diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs
index 1a08795..af7fca3 100644
--- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs
+++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs
@@ -288,6 +288,31 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
288 } 288 }
289 } 289 }
290 #endregion 290 #endregion
291
292 #region " Check execution queue for a specified Event"
293 /// <summary>
294 /// checks to see if a specified event type is already in the queue
295 /// </summary>
296 /// <param name="localID">Region object ID</param>
297 /// <param name="FunctionName">Name of the function, will be state + "_event_" + FunctionName</param>
298 /// <returns>true if event is found , false if not found</returns>
299 ///
300 public bool CheckEeventQueueForEvent(uint localID, string FunctionName)
301 {
302 if (eventQueue.Count > 0)
303 {
304 lock (eventQueue)
305 {
306 foreach (EventQueueManager.QueueItemStruct QIS in eventQueue)
307 {
308 if ((QIS.functionName == FunctionName) && (QIS.localID == localID))
309 return true;
310 }
311 }
312 }
313 return false;
314 }
315 #endregion
291 316
292 #region " Add events to execution queue " 317 #region " Add events to execution queue "
293 /// <summary> 318 /// <summary>