From f8d8366bfa6f048107d22b4b73af22803810be81 Mon Sep 17 00:00:00 2001 From: Melanie Date: Fri, 7 Aug 2009 03:04:06 +0100 Subject: Revert the XEngine memleak patch, it causes premature GC. This matches behavior seen with an earlier attempt to do this, apparently the sponsor mechanism does't work in Mono --- .../ScriptEngine/Shared/Instance/ScriptInstance.cs | 25 ++++++---------------- 1 file changed, 7 insertions(+), 18 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Shared/Instance') diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 6d62249..8168300 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs @@ -96,8 +96,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance private string m_CurrentState = String.Empty; private UUID m_RegionID = UUID.Zero; - private ScriptSponsor m_ScriptSponsor; - private bool m_destroyed = false; + //private ISponsor m_ScriptSponsor; private Dictionary, KeyValuePair> m_LineMap; @@ -262,9 +261,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance Path.GetFileNameWithoutExtension(assembly), "SecondLife.Script"); - m_ScriptSponsor = new ScriptSponsor(); - ILease lease = (ILease)RemotingServices.GetLifetimeService(m_Script as ScriptBaseClass); - lease.Register(m_ScriptSponsor); + // Add a sponsor to the script +// ISponsor scriptSponsor = new ScriptSponsor(); +// ILease lease = (ILease)RemotingServices.GetLifetimeService(m_Script as MarshalByRefObject); +// lease.Register(scriptSponsor); + //m_ScriptSponsor = scriptSponsor; + } catch (Exception) { @@ -447,13 +449,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance { ReleaseControls(); AsyncCommandManager.RemoveScript(m_Engine, m_LocalID, m_ItemID); - - m_Script.Close(); - m_ScriptSponsor.Close(); - ILease lease = (ILease)RemotingServices.GetLifetimeService(m_Script as ScriptBaseClass); - lease.Unregister(m_ScriptSponsor); - - m_destroyed = true; } public void RemoveState() @@ -889,8 +884,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance public void SaveState(string assembly) { - - // If we're currently in an event, just tell it to save upon return // if (m_InEvent) @@ -899,10 +892,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance return; } - // Data may not be available as the script has already been destroyed - if (m_destroyed == true) - return; - PluginData = AsyncCommandManager.GetSerializationData(m_Engine, m_ItemID); string xml = ScriptSerializer.Serialize(this); -- cgit v1.1