From 4ee8d8a813f6ee164fb361fbf6c26384b668bd1a Mon Sep 17 00:00:00 2001 From: Melanie Date: Fri, 7 Aug 2009 20:43:23 +0100 Subject: Another stab at cmickeyb's patch for script GC. Moved the Close() for the appdomain-hosted parts into a new destructor on ScriptInstance. --- OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/XEngine') diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index c7673c7..ff75e2f 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -272,6 +272,10 @@ namespace OpenSim.Region.ScriptEngine.XEngine instance.ClearQueue(); instance.Stop(0); + // Release events, timer, etc + // + instance.DestroyScriptInstance(); + // Unload scripts and app domains // Must be done explicitly because they have infinite // lifetime @@ -282,10 +286,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine m_DomainScripts.Remove(instance.AppDomain); UnloadAppDomain(instance.AppDomain); } - - // Release events, timer, etc - // - instance.DestroyScriptInstance(); } m_Scripts.Clear(); m_PrimObjects.Clear(); @@ -802,6 +802,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine } } + instance.RemoveState(); + instance.DestroyScriptInstance(); + m_DomainScripts[instance.AppDomain].Remove(instance.ItemID); if (m_DomainScripts[instance.AppDomain].Count == 0) { @@ -809,9 +812,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine UnloadAppDomain(instance.AppDomain); } - instance.RemoveState(); - instance.DestroyScriptInstance(); - instance = null; ObjectRemoved handlerObjectRemoved = OnObjectRemoved; -- cgit v1.1