Mantis#2183. Thank you kindly, Ewe Loon for a patch that addresses:
after using llTakeControls my sim receives about 200 messages per second, l of which get queued , this could be because there is no lag as the viewer and sim are on the same computer. The patch I have included checks to see if the "Changed" param is 0 then searches the EventQueue for Control messages being sent to the same localid, if it finds a message already in the Queue and Changed==0 then the new message is only notifing you the key is being held, since there is already a message the new one isnt needed so it isnt added to the queue.0.6.0-stable
parent
37e6ce24a2
commit
f2d60976d0
|
@ -357,6 +357,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
|||
|
||||
public void control(uint localID, UUID itemID, UUID agentID, uint held, uint change)
|
||||
{
|
||||
if ((change == 0) && (myScriptEngine.m_EventQueueManager.CheckEeventQueueForEvent(localID,"control"))) return;
|
||||
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)});
|
||||
}
|
||||
|
||||
|
|
|
@ -289,6 +289,31 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase
|
|||
}
|
||||
#endregion
|
||||
|
||||
#region " Check execution queue for a specified Event"
|
||||
/// <summary>
|
||||
/// checks to see if a specified event type is already in the queue
|
||||
/// </summary>
|
||||
/// <param name="localID">Region object ID</param>
|
||||
/// <param name="FunctionName">Name of the function, will be state + "_event_" + FunctionName</param>
|
||||
/// <returns>true if event is found , false if not found</returns>
|
||||
///
|
||||
public bool CheckEeventQueueForEvent(uint localID, string FunctionName)
|
||||
{
|
||||
if (eventQueue.Count > 0)
|
||||
{
|
||||
lock (eventQueue)
|
||||
{
|
||||
foreach (EventQueueManager.QueueItemStruct QIS in eventQueue)
|
||||
{
|
||||
if ((QIS.functionName == FunctionName) && (QIS.localID == localID))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region " Add events to execution queue "
|
||||
/// <summary>
|
||||
/// Add event to event execution queue
|
||||
|
|
Loading…
Reference in New Issue