Mantis#1640. Thank you, Chernega for a patch that addresses:
It would appear that calling llResetScript() in state_entry() causes deadlock of region. Probably due to llResetScript calling state_entry again. llResetScript should see who called it, and not recall state_entry() after a state/variable reset. Once this script is in a prim, the region/world/debug/script window shows it consuming the server (from 2,400 to 800,000 milliseconds).0.6.0-stable
parent
b8a3a27221
commit
0aaf0c4565
|
@ -866,6 +866,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
private string m_ScriptName;
|
||||
private string m_Assembly;
|
||||
private int m_StartParam = 0;
|
||||
private string m_CurrentEvent = String.Empty;
|
||||
|
||||
private Dictionary<string,IScriptApi> m_Apis = new Dictionary<string,IScriptApi>();
|
||||
|
||||
|
@ -1269,6 +1270,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
}
|
||||
else
|
||||
{
|
||||
m_CurrentEvent = data.EventName;
|
||||
// m_Engine.Log.DebugFormat("[XEngine] Processed event {0}", data.EventName);
|
||||
SceneObjectPart part = m_Engine.World.GetSceneObjectPart(
|
||||
m_LocalID);
|
||||
|
@ -1363,8 +1365,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
|||
m_State = "default";
|
||||
if (running)
|
||||
Start();
|
||||
PostEvent(new EventParams("state_entry",
|
||||
new Object[0], new DetectParams[0]));
|
||||
if(m_CurrentEvent != "state_entry")
|
||||
{
|
||||
PostEvent(new EventParams("state_entry",
|
||||
new Object[0], new DetectParams[0]));
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<string, object> GetVars()
|
||||
|
|
Loading…
Reference in New Issue