aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2012-07-11 09:03:18 +0100
committerUbitUmarov2012-07-11 09:03:18 +0100
commit6252114ea02c07bab2b61fa882f4a26264cbb347 (patch)
tree86821d2ba17eb79b676453dbdfe575e5459314c3
parentubitODE leaks (diff)
downloadopensim-SC_OLD-6252114ea02c07bab2b61fa882f4a26264cbb347.zip
opensim-SC_OLD-6252114ea02c07bab2b61fa882f4a26264cbb347.tar.gz
opensim-SC_OLD-6252114ea02c07bab2b61fa882f4a26264cbb347.tar.bz2
opensim-SC_OLD-6252114ea02c07bab2b61fa882f4a26264cbb347.tar.xz
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)
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs28
1 files changed, 23 insertions, 5 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 05bb161..ca62bac 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -108,8 +108,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
108 protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache = 108 protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache =
109 new Dictionary<UUID, UserInfoCacheEntry>(); 109 new Dictionary<UUID, UserInfoCacheEntry>();
110 110
111 protected Timer m_ShoutSayTimer; 111// protected Timer m_ShoutSayTimer;
112 protected int m_SayShoutCount = 0; 112 protected int m_SayShoutCount = 0;
113 DateTime m_lastSayShoutCheck;
113 114
114 private Dictionary<string, string> MovementAnimationsForLSL = 115 private Dictionary<string, string> MovementAnimationsForLSL =
115 new Dictionary<string, string> { 116 new Dictionary<string, string> {
@@ -135,10 +136,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
135 136
136 public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID) 137 public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID)
137 { 138 {
139/*
138 m_ShoutSayTimer = new Timer(1000); 140 m_ShoutSayTimer = new Timer(1000);
139 m_ShoutSayTimer.Elapsed += SayShoutTimerElapsed; 141 m_ShoutSayTimer.Elapsed += SayShoutTimerElapsed;
140 m_ShoutSayTimer.AutoReset = true; 142 m_ShoutSayTimer.AutoReset = true;
141 m_ShoutSayTimer.Start(); 143 m_ShoutSayTimer.Start();
144*/
145 m_lastSayShoutCheck = DateTime.UtcNow;
142 146
143 m_ScriptEngine = ScriptEngine; 147 m_ScriptEngine = ScriptEngine;
144 m_host = host; 148 m_host = host;
@@ -900,12 +904,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
900 wComm.DeliverMessage(ChatTypeEnum.Whisper, channelID, m_host.Name, m_host.UUID, text); 904 wComm.DeliverMessage(ChatTypeEnum.Whisper, channelID, m_host.Name, m_host.UUID, text);
901 } 905 }
902 906
907 private void CheckSayShoutTime()
908 {
909 DateTime now = DateTime.UtcNow;
910 if ((now - m_lastSayShoutCheck).Ticks > 10000000) // 1sec
911 {
912 m_lastSayShoutCheck = now;
913 m_SayShoutCount = 0;
914 }
915 else
916 m_SayShoutCount++;
917 }
918
903 public void llSay(int channelID, string text) 919 public void llSay(int channelID, string text)
904 { 920 {
905 m_host.AddScriptLPS(1); 921 m_host.AddScriptLPS(1);
906 922
907 if (channelID == 0) 923 if (channelID == 0)
908 m_SayShoutCount++; 924// m_SayShoutCount++;
925 CheckSayShoutTime();
909 926
910 if (m_SayShoutCount >= 11) 927 if (m_SayShoutCount >= 11)
911 ScriptSleep(2000); 928 ScriptSleep(2000);
@@ -933,7 +950,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
933 m_host.AddScriptLPS(1); 950 m_host.AddScriptLPS(1);
934 951
935 if (channelID == 0) 952 if (channelID == 0)
936 m_SayShoutCount++; 953// m_SayShoutCount++;
954 CheckSayShoutTime();
937 955
938 if (m_SayShoutCount >= 11) 956 if (m_SayShoutCount >= 11)
939 ScriptSleep(2000); 957 ScriptSleep(2000);
@@ -12373,12 +12391,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
12373 12391
12374 return rq.ToString(); 12392 return rq.ToString();
12375 } 12393 }
12376 12394/*
12377 private void SayShoutTimerElapsed(Object sender, ElapsedEventArgs args) 12395 private void SayShoutTimerElapsed(Object sender, ElapsedEventArgs args)
12378 { 12396 {
12379 m_SayShoutCount = 0; 12397 m_SayShoutCount = 0;
12380 } 12398 }
12381 12399*/
12382 private struct Tri 12400 private struct Tri
12383 { 12401 {
12384 public Vector3 p1; 12402 public Vector3 p1;