mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 13:55:35 +08:00
Merge branch 'master' into careminster
Conflicts: OpenSim/Region/CoreModules/Avatar/Inventory/Transfer/InventoryTransferModule.cs OpenSim/Region/Framework/Scenes/Scene.cs OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
This commit is contained in:
@@ -109,6 +109,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>
|
||||
@@ -715,6 +717,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||
m_Scene.EventManager.OnGetScriptRunning += OnGetScriptRunning;
|
||||
m_Scene.EventManager.OnShutdown += OnShutdown;
|
||||
|
||||
// If region ready has been triggered, then the region had no scripts to compile and completed its other
|
||||
// work.
|
||||
m_Scene.EventManager.OnRegionReady += s => m_InitialStartup = false;
|
||||
|
||||
if (m_SleepTime > 0)
|
||||
{
|
||||
m_ThreadPool.QueueWorkItem(new WorkItemCallback(this.DoMaintenance),
|
||||
@@ -1269,7 +1275,15 @@ 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;
|
||||
}
|
||||
|
||||
@@ -1660,6 +1674,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)
|
||||
@@ -1671,6 +1687,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)
|
||||
|
||||
Reference in New Issue
Block a user