mirror of
https://github.com/opensim/opensim.git
synced 2026-05-14 18:55:39 +08:00
Attempt to give script objects a proper lease time (DNE and xengine). Relies on GC. Also removed lease for LSL_Api as it strictly speaking should not be MarshalByRef. Or should it? If so I broke scripting! :)
This commit is contained in:
@@ -28,6 +28,8 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Globalization;
|
||||
using System.Runtime.Remoting;
|
||||
using System.Runtime.Remoting.Lifetime;
|
||||
using log4net;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework;
|
||||
@@ -39,6 +41,7 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
using System.Threading;
|
||||
using OpenSim.Region.ScriptEngine.Shared.Api.Runtime;
|
||||
using OpenSim.Region.ScriptEngine.Shared.ScriptBase;
|
||||
using OpenSim.Region.ScriptEngine.Shared.CodeTools;
|
||||
|
||||
@@ -56,6 +59,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
|
||||
public Dictionary<string, IScriptApi> Apis;
|
||||
public Dictionary<KeyValuePair<int,int>, KeyValuePair<int,int>>
|
||||
LineMap;
|
||||
public ISponsor ScriptSponsor;
|
||||
}
|
||||
|
||||
public class ScriptManager
|
||||
@@ -164,6 +168,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine
|
||||
CompiledScript =
|
||||
m_scriptEngine.m_AppDomainManager.LoadScript(
|
||||
CompiledScriptFile, out id.AppDomain);
|
||||
//Register the sponsor
|
||||
ISponsor scriptSponsor = new ScriptSponsor();
|
||||
ILease lease = (ILease)RemotingServices.GetLifetimeService(CompiledScript as MarshalByRefObject);
|
||||
lease.Register(scriptSponsor);
|
||||
id.ScriptSponsor = scriptSponsor;
|
||||
|
||||
id.LineMap = LSLCompiler.LineMap();
|
||||
id.Script = CompiledScript;
|
||||
|
||||
Reference in New Issue
Block a user