Make the scrpt running flag work properly

This commit is contained in:
Melanie
2012-07-17 15:00:42 +02:00
parent 356d597296
commit c489bc1cd2
2 changed files with 24 additions and 6 deletions

View File

@@ -108,6 +108,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine
private bool m_KillTimedOutScripts;
private string m_ScriptEnginesPath = null;
private ExpiringCache<UUID, bool> m_runFlags = new ExpiringCache<UUID, bool>();
/// <summary>
/// Is the entire simulator in the process of shutting down?
/// </summary>
@@ -1196,6 +1198,14 @@ namespace OpenSim.Region.ScriptEngine.XEngine
if (instance != null)
instance.Init();
bool runIt;
if (m_runFlags.TryGetValue(itemID, out runIt))
{
if (!runIt)
StopScript(itemID);
m_runFlags.Remove(itemID);
}
return true;
}
@@ -1568,6 +1578,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine
IScriptInstance instance = GetInstance(itemID);
if (instance != null)
instance.Start();
else
m_runFlags.AddOrUpdate(itemID, true, 240);
}
public void StopScript(UUID itemID)
@@ -1579,6 +1591,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
// cause issues on mono 2.6, 2.10 and possibly later where locks are not released properly on abort.
instance.Stop(1000);
}
else
{
m_runFlags.AddOrUpdate(itemID, false, 240);
}
}
public DetectParams GetDetectParams(UUID itemID, int idx)