diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 0e28b0cb12..19c9d08eff 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs @@ -2171,7 +2171,7 @@ namespace OpenSim.Region.Environment.Scenes group.UpdateGroupRotation(rot); //group.ApplyPhysics(m_physicalPrim); group.Velocity = vel; - group.CreateScriptInstances(param, true, DefaultScriptEngine, 0); + group.CreateScriptInstances(param, true, DefaultScriptEngine, 2); rootPart.ScheduleFullUpdate(); if (!ExternalChecks.ExternalChecksBypassPermissions()) diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs index f615250378..dbcc4ed3bf 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs @@ -39,7 +39,8 @@ namespace OpenSim.Region.ScriptEngine.Interfaces public enum StateSource { NewRez = 0, - PrimCrossing = 1 + PrimCrossing = 1, + ScriptedRez= 2 } public interface IScriptWorkItem diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 6584bb392d..e5dfb2b5c2 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs @@ -77,7 +77,6 @@ namespace OpenSim.Region.ScriptEngine.XEngine #pragma warning restore 414 private int m_EventLimit; private bool m_KillTimedOutScripts; -// bool m_firstStart = true; private static List m_ScriptEngines = new List(); @@ -390,48 +389,26 @@ namespace OpenSim.Region.ScriptEngine.XEngine Object[] parms = new Object[]{localID, itemID, script, startParam, postOnRez, (StateSource)stateSource}; - lock (m_CompileQueue) + if (stateSource == (int)StateSource.ScriptedRez) { - m_CompileQueue.Enqueue(parms); - - if (m_CurrentCompile == null) + DoOnRezScript(parms); + } + else + { + lock (m_CompileQueue) { -// if (m_firstStart) -// { -// m_firstStart = false; -// m_CurrentCompile = m_ThreadPool.QueueWorkItem( -// new WorkItemCallback(this.DoScriptWait), -// new Object[0]); -// return; -// } + m_CompileQueue.Enqueue(parms); - m_CurrentCompile = m_ThreadPool.QueueWorkItem( - new WorkItemCallback(this.DoOnRezScriptQueue), - new Object[0]); + if (m_CurrentCompile == null) + { + m_CurrentCompile = m_ThreadPool.QueueWorkItem( + new WorkItemCallback(this.DoOnRezScriptQueue), + new Object[0]); + } } } } - public Object DoScriptWait(Object dummy) - { - Thread.Sleep(10000); - - lock (m_CompileQueue) - { - if (m_CompileQueue.Count > 0) - { - m_CurrentCompile = m_ThreadPool.QueueWorkItem( - new WorkItemCallback(this.DoOnRezScriptQueue), - new Object[0]); - } - else - { - m_CurrentCompile = null; - } - } - return null; - } - public Object DoOnRezScriptQueue(Object dummy) { Object o;