aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/XEngine
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/EventManager.cs3
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/Properties/AssemblyInfo.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs50
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs6
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 }