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_ScriptName;
|
||||||
private string m_Assembly;
|
private string m_Assembly;
|
||||||
private int m_StartParam = 0;
|
private int m_StartParam = 0;
|
||||||
|
private string m_CurrentEvent = String.Empty;
|
||||||
|
|
||||||
private Dictionary<string,IScriptApi> m_Apis = new Dictionary<string,IScriptApi>();
|
private Dictionary<string,IScriptApi> m_Apis = new Dictionary<string,IScriptApi>();
|
||||||
|
|
||||||
|
@ -1269,6 +1270,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
m_CurrentEvent = data.EventName;
|
||||||
// m_Engine.Log.DebugFormat("[XEngine] Processed event {0}", data.EventName);
|
// m_Engine.Log.DebugFormat("[XEngine] Processed event {0}", data.EventName);
|
||||||
SceneObjectPart part = m_Engine.World.GetSceneObjectPart(
|
SceneObjectPart part = m_Engine.World.GetSceneObjectPart(
|
||||||
m_LocalID);
|
m_LocalID);
|
||||||
|
@ -1363,8 +1365,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
m_State = "default";
|
m_State = "default";
|
||||||
if (running)
|
if (running)
|
||||||
Start();
|
Start();
|
||||||
PostEvent(new EventParams("state_entry",
|
if(m_CurrentEvent != "state_entry")
|
||||||
new Object[0], new DetectParams[0]));
|
{
|
||||||
|
PostEvent(new EventParams("state_entry",
|
||||||
|
new Object[0], new DetectParams[0]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<string, object> GetVars()
|
public Dictionary<string, object> GetVars()
|
||||||
|
|
Loading…
Reference in New Issue