remove expensive and leaked ( in Xengine at least) SayShout timer and

replace it by a simpler function that should do the same (?) (don't like
 much those 10 + 1 bursts)
avinationmerge
UbitUmarov 2012-07-11 09:03:18 +01:00
parent 84ab4c4462
commit 6252114ea0
1 changed files with 23 additions and 5 deletions

View File

@ -108,8 +108,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache =
new Dictionary<UUID, UserInfoCacheEntry>();
protected Timer m_ShoutSayTimer;
// protected Timer m_ShoutSayTimer;
protected int m_SayShoutCount = 0;
DateTime m_lastSayShoutCheck;
private Dictionary<string, string> MovementAnimationsForLSL =
new Dictionary<string, string> {
@ -135,10 +136,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID)
{
/*
m_ShoutSayTimer = new Timer(1000);
m_ShoutSayTimer.Elapsed += SayShoutTimerElapsed;
m_ShoutSayTimer.AutoReset = true;
m_ShoutSayTimer.Start();
*/
m_lastSayShoutCheck = DateTime.UtcNow;
m_ScriptEngine = ScriptEngine;
m_host = host;
@ -900,12 +904,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
wComm.DeliverMessage(ChatTypeEnum.Whisper, channelID, m_host.Name, m_host.UUID, text);
}
private void CheckSayShoutTime()
{
DateTime now = DateTime.UtcNow;
if ((now - m_lastSayShoutCheck).Ticks > 10000000) // 1sec
{
m_lastSayShoutCheck = now;
m_SayShoutCount = 0;
}
else
m_SayShoutCount++;
}
public void llSay(int channelID, string text)
{
m_host.AddScriptLPS(1);
if (channelID == 0)
m_SayShoutCount++;
// m_SayShoutCount++;
CheckSayShoutTime();
if (m_SayShoutCount >= 11)
ScriptSleep(2000);
@ -933,7 +950,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_host.AddScriptLPS(1);
if (channelID == 0)
m_SayShoutCount++;
// m_SayShoutCount++;
CheckSayShoutTime();
if (m_SayShoutCount >= 11)
ScriptSleep(2000);
@ -12373,12 +12391,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return rq.ToString();
}
/*
private void SayShoutTimerElapsed(Object sender, ElapsedEventArgs args)
{
m_SayShoutCount = 0;
}
*/
private struct Tri
{
public Vector3 p1;