diff options
Diffstat (limited to '')
4 files changed, 24 insertions, 37 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs index 0ff2da3..ad775ff 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs | |||
@@ -245,6 +245,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
245 | DetectParams d = new DetectParams(); | 245 | DetectParams d = new DetectParams(); |
246 | d.Key =detobj.keyUUID; | 246 | d.Key =detobj.keyUUID; |
247 | d.Populate(myScriptEngine.World); | 247 | d.Populate(myScriptEngine.World); |
248 | d.LinkNum = detobj.linkNumber; // do it here since currently linknum is collided part | ||
248 | det.Add(d); | 249 | det.Add(d); |
249 | } | 250 | } |
250 | 251 | ||
@@ -265,6 +266,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
265 | DetectParams d = new DetectParams(); | 266 | DetectParams d = new DetectParams(); |
266 | d.Key =detobj.keyUUID; | 267 | d.Key =detobj.keyUUID; |
267 | d.Populate(myScriptEngine.World); | 268 | d.Populate(myScriptEngine.World); |
269 | d.LinkNum = detobj.linkNumber; // do it here since currently linknum is collided part | ||
268 | det.Add(d); | 270 | det.Add(d); |
269 | } | 271 | } |
270 | 272 | ||
@@ -284,6 +286,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
284 | DetectParams d = new DetectParams(); | 286 | DetectParams d = new DetectParams(); |
285 | d.Key =detobj.keyUUID; | 287 | d.Key =detobj.keyUUID; |
286 | d.Populate(myScriptEngine.World); | 288 | d.Populate(myScriptEngine.World); |
289 | d.LinkNum = detobj.linkNumber; // do it here since currently linknum is collided part | ||
287 | det.Add(d); | 290 | det.Add(d); |
288 | } | 291 | } |
289 | 292 | ||
diff --git a/OpenSim/Region/ScriptEngine/XEngine/Properties/AssemblyInfo.cs b/OpenSim/Region/ScriptEngine/XEngine/Properties/AssemblyInfo.cs index f0640da..87ea9c4 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/Properties/AssemblyInfo.cs | |||
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices; | |||
29 | // Build Number | 29 | // Build Number |
30 | // Revision | 30 | // Revision |
31 | // | 31 | // |
32 | [assembly: AssemblyVersion("0.7.6.*")] | 32 | [assembly: AssemblyVersion("0.8.0.*")] |
33 | 33 | ||
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index ec35fde..1831c39 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -551,7 +551,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
551 | /// <param name="instance"></param> | 551 | /// <param name="instance"></param> |
552 | /// <param name="keySelector">Basis on which to sort output. Can be null if no sort needs to take place</param> | 552 | /// <param name="keySelector">Basis on which to sort output. Can be null if no sort needs to take place</param> |
553 | private void HandleScriptsAction<TKey>( | 553 | private void HandleScriptsAction<TKey>( |
554 | string[] cmdparams, Action<IScriptInstance> action, Func<IScriptInstance, TKey> keySelector) | 554 | string[] cmdparams, Action<IScriptInstance> action, System.Func<IScriptInstance, TKey> keySelector) |
555 | { | 555 | { |
556 | if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_Scene)) | 556 | if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_Scene)) |
557 | return; | 557 | return; |
@@ -609,7 +609,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
609 | if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_Scene)) | 609 | if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_Scene)) |
610 | return; | 610 | return; |
611 | 611 | ||
612 | MainConsole.Instance.OutputFormat(GetStatusReport()); | 612 | MainConsole.Instance.Output(GetStatusReport()); |
613 | } | 613 | } |
614 | 614 | ||
615 | public string GetStatusReport() | 615 | public string GetStatusReport() |
@@ -708,7 +708,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
708 | sb.AppendFormat("Containing part UUID: {0}\n", instance.ObjectID); | 708 | sb.AppendFormat("Containing part UUID: {0}\n", instance.ObjectID); |
709 | sb.AppendFormat("Position : {0}\n", sop.AbsolutePosition); | 709 | sb.AppendFormat("Position : {0}\n", sop.AbsolutePosition); |
710 | 710 | ||
711 | MainConsole.Instance.OutputFormat(sb.ToString()); | 711 | MainConsole.Instance.Output(sb.ToString()); |
712 | } | 712 | } |
713 | 713 | ||
714 | private void HandleSuspendScript(IScriptInstance instance) | 714 | private void HandleSuspendScript(IScriptInstance instance) |
@@ -1478,18 +1478,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1478 | // Do we even have it? | 1478 | // Do we even have it? |
1479 | if (!m_Scripts.ContainsKey(itemID)) | 1479 | if (!m_Scripts.ContainsKey(itemID)) |
1480 | { | 1480 | { |
1481 | // Do we even have it? | ||
1482 | if (!m_Scripts.ContainsKey(itemID)) | ||
1483 | return; | ||
1484 | |||
1485 | lockScriptsForRead(false); | 1481 | lockScriptsForRead(false); |
1486 | lockScriptsForWrite(true); | ||
1487 | m_Scripts.Remove(itemID); | ||
1488 | lockScriptsForWrite(false); | ||
1489 | |||
1490 | return; | 1482 | return; |
1491 | } | 1483 | } |
1492 | |||
1493 | 1484 | ||
1494 | IScriptInstance instance=m_Scripts[itemID]; | 1485 | IScriptInstance instance=m_Scripts[itemID]; |
1495 | lockScriptsForRead(false); | 1486 | lockScriptsForRead(false); |
@@ -1523,11 +1514,14 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1523 | instance.RemoveState(); | 1514 | instance.RemoveState(); |
1524 | instance.DestroyScriptInstance(); | 1515 | instance.DestroyScriptInstance(); |
1525 | 1516 | ||
1526 | m_DomainScripts[instance.AppDomain].Remove(instance.ItemID); | 1517 | if (m_DomainScripts.ContainsKey(instance.AppDomain)) |
1527 | if (m_DomainScripts[instance.AppDomain].Count == 0) | ||
1528 | { | 1518 | { |
1529 | m_DomainScripts.Remove(instance.AppDomain); | 1519 | m_DomainScripts[instance.AppDomain].Remove(instance.ItemID); |
1530 | UnloadAppDomain(instance.AppDomain); | 1520 | if (m_DomainScripts[instance.AppDomain].Count == 0) |
1521 | { | ||
1522 | m_DomainScripts.Remove(instance.AppDomain); | ||
1523 | UnloadAppDomain(instance.AppDomain); | ||
1524 | } | ||
1531 | } | 1525 | } |
1532 | 1526 | ||
1533 | ObjectRemoved handlerObjectRemoved = OnObjectRemoved; | 1527 | ObjectRemoved handlerObjectRemoved = OnObjectRemoved; |
@@ -1632,7 +1626,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1632 | startInfo.MaxWorkerThreads = maxThreads; | 1626 | startInfo.MaxWorkerThreads = maxThreads; |
1633 | startInfo.MinWorkerThreads = minThreads; | 1627 | startInfo.MinWorkerThreads = minThreads; |
1634 | startInfo.ThreadPriority = threadPriority;; | 1628 | startInfo.ThreadPriority = threadPriority;; |
1635 | startInfo.StackSize = stackSize; | 1629 | startInfo.MaxStackSize = stackSize; |
1636 | startInfo.StartSuspended = true; | 1630 | startInfo.StartSuspended = true; |
1637 | 1631 | ||
1638 | m_ThreadPool = new SmartThreadPool(startInfo); | 1632 | m_ThreadPool = new SmartThreadPool(startInfo); |
@@ -1826,9 +1820,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1826 | public bool GetScriptState(UUID itemID) | 1820 | public bool GetScriptState(UUID itemID) |
1827 | { | 1821 | { |
1828 | IScriptInstance instance = GetInstance(itemID); | 1822 | IScriptInstance instance = GetInstance(itemID); |
1829 | if (instance != null) | 1823 | return instance != null && instance.Running; |
1830 | return instance.Running; | ||
1831 | return false; | ||
1832 | } | 1824 | } |
1833 | 1825 | ||
1834 | [DebuggerNonUserCode] | 1826 | [DebuggerNonUserCode] |
@@ -1873,9 +1865,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1873 | public DetectParams GetDetectParams(UUID itemID, int idx) | 1865 | public DetectParams GetDetectParams(UUID itemID, int idx) |
1874 | { | 1866 | { |
1875 | IScriptInstance instance = GetInstance(itemID); | 1867 | IScriptInstance instance = GetInstance(itemID); |
1876 | if (instance != null) | 1868 | return instance != null ? instance.GetDetectParams(idx) : null; |
1877 | return instance.GetDetectParams(idx); | ||
1878 | return null; | ||
1879 | } | 1869 | } |
1880 | 1870 | ||
1881 | public void SetMinEventDelay(UUID itemID, double delay) | 1871 | public void SetMinEventDelay(UUID itemID, double delay) |
@@ -1888,9 +1878,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1888 | public UUID GetDetectID(UUID itemID, int idx) | 1878 | public UUID GetDetectID(UUID itemID, int idx) |
1889 | { | 1879 | { |
1890 | IScriptInstance instance = GetInstance(itemID); | 1880 | IScriptInstance instance = GetInstance(itemID); |
1891 | if (instance != null) | 1881 | return instance != null ? instance.GetDetectID(idx) : UUID.Zero; |
1892 | return instance.GetDetectID(idx); | ||
1893 | return UUID.Zero; | ||
1894 | } | 1882 | } |
1895 | 1883 | ||
1896 | [DebuggerNonUserCode] | 1884 | [DebuggerNonUserCode] |
@@ -1905,9 +1893,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1905 | public int GetStartParameter(UUID itemID) | 1893 | public int GetStartParameter(UUID itemID) |
1906 | { | 1894 | { |
1907 | IScriptInstance instance = GetInstance(itemID); | 1895 | IScriptInstance instance = GetInstance(itemID); |
1908 | if (instance == null) | 1896 | return instance == null ? 0 : instance.StartParam; |
1909 | return 0; | ||
1910 | return instance.StartParam; | ||
1911 | } | 1897 | } |
1912 | 1898 | ||
1913 | public void OnShutdown() | 1899 | public void OnShutdown() |
@@ -1940,9 +1926,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1940 | public IScriptApi GetApi(UUID itemID, string name) | 1926 | public IScriptApi GetApi(UUID itemID, string name) |
1941 | { | 1927 | { |
1942 | IScriptInstance instance = GetInstance(itemID); | 1928 | IScriptInstance instance = GetInstance(itemID); |
1943 | if (instance == null) | 1929 | return instance == null ? null : instance.GetApi(name); |
1944 | return null; | ||
1945 | return instance.GetApi(name); | ||
1946 | } | 1930 | } |
1947 | 1931 | ||
1948 | public void OnGetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID) | 1932 | public void OnGetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID) |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs b/OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs index 8dd7677..9d9dee1 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs | |||
@@ -52,16 +52,16 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
52 | return wr.Cancel(); | 52 | return wr.Cancel(); |
53 | } | 53 | } |
54 | 54 | ||
55 | public void Abort() | 55 | public bool Abort() |
56 | { | 56 | { |
57 | wr.Abort(); | 57 | return wr.Cancel(true); |
58 | } | 58 | } |
59 | 59 | ||
60 | public bool Wait(int t) | 60 | public bool Wait(int t) |
61 | { | 61 | { |
62 | // We use the integer version of WaitAll because the current version of SmartThreadPool has a bug with the | 62 | // We use the integer version of WaitAll because the current version of SmartThreadPool has a bug with the |
63 | // TimeSpan version. The number of milliseconds in TimeSpan is an int64 so when STP casts it down to an | 63 | // TimeSpan version. The number of milliseconds in TimeSpan is an int64 so when STP casts it down to an |
64 | // int (32-bit) we can end up with bad values. This occurs on Windows though curious not on Mono 2.10.8 | 64 | // int (32-bit) we can end up with bad values. This occurs on Windows though curiously not on Mono 2.10.8 |
65 | // (or very likely other versions of Mono at least up until 3.0.3). | 65 | // (or very likely other versions of Mono at least up until 3.0.3). |
66 | return SmartThreadPool.WaitAll(new IWorkItemResult[] {wr}, t, false); | 66 | return SmartThreadPool.WaitAll(new IWorkItemResult[] {wr}, t, false); |
67 | } | 67 | } |