diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Framework/Util.cs | 20 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | 9 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs | 6 |
5 files changed, 22 insertions, 19 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index bde4673..a3602e9 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -1840,7 +1840,7 @@ namespace OpenSim.Framework | |||
1840 | case FireAndForgetMethod.SmartThreadPool: | 1840 | case FireAndForgetMethod.SmartThreadPool: |
1841 | if (m_ThreadPool == null) | 1841 | if (m_ThreadPool == null) |
1842 | InitThreadPool(15); | 1842 | InitThreadPool(15); |
1843 | m_ThreadPool.QueueWorkItem(SmartThreadPoolCallback, new object[] { realCallback, obj }); | 1843 | m_ThreadPool.QueueWorkItem((cb, o) => cb(o), realCallback, obj); |
1844 | break; | 1844 | break; |
1845 | case FireAndForgetMethod.Thread: | 1845 | case FireAndForgetMethod.Thread: |
1846 | Thread thread = new Thread(delegate(object o) { realCallback(o); }); | 1846 | Thread thread = new Thread(delegate(object o) { realCallback(o); }); |
@@ -1910,15 +1910,15 @@ namespace OpenSim.Framework | |||
1910 | return sb.ToString(); | 1910 | return sb.ToString(); |
1911 | } | 1911 | } |
1912 | 1912 | ||
1913 | private static object SmartThreadPoolCallback(object o) | 1913 | // private static object SmartThreadPoolCallback(object o) |
1914 | { | 1914 | // { |
1915 | object[] array = (object[])o; | 1915 | // object[] array = (object[])o; |
1916 | WaitCallback callback = (WaitCallback)array[0]; | 1916 | // WaitCallback callback = (WaitCallback)array[0]; |
1917 | object obj = array[1]; | 1917 | // object obj = array[1]; |
1918 | 1918 | // | |
1919 | callback(obj); | 1919 | // callback(obj); |
1920 | return null; | 1920 | // return null; |
1921 | } | 1921 | // } |
1922 | 1922 | ||
1923 | #endregion FireAndForget Threading Pattern | 1923 | #endregion FireAndForget Threading Pattern |
1924 | 1924 | ||
diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs index 35ae44c..b9a217b 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs | |||
@@ -51,7 +51,7 @@ namespace OpenSim.Region.ScriptEngine.Interfaces | |||
51 | public interface IScriptWorkItem | 51 | public interface IScriptWorkItem |
52 | { | 52 | { |
53 | bool Cancel(); | 53 | bool Cancel(); |
54 | void Abort(); | 54 | bool Abort(); |
55 | 55 | ||
56 | /// <summary> | 56 | /// <summary> |
57 | /// Wait for the work item to complete. | 57 | /// Wait for the work item to complete. |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 1e6db43..f9d3afc 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | |||
@@ -564,9 +564,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | |||
564 | 564 | ||
565 | public bool Stop(int timeout) | 565 | public bool Stop(int timeout) |
566 | { | 566 | { |
567 | // m_log.DebugFormat( | 567 | if (DebugLevel >= 1) |
568 | // "[SCRIPT INSTANCE]: Stopping script {0} {1} in {2} {3} with timeout {4} {5} {6}", | 568 | m_log.DebugFormat( |
569 | // ScriptName, ItemID, PrimName, ObjectID, timeout, m_InSelfDelete, DateTime.Now.Ticks); | 569 | "[SCRIPT INSTANCE]: Stopping script {0} {1} in {2} {3} with timeout {4} {5} {6}", |
570 | ScriptName, ItemID, PrimName, ObjectID, timeout, m_InSelfDelete, DateTime.Now.Ticks); | ||
570 | 571 | ||
571 | IScriptWorkItem workItem; | 572 | IScriptWorkItem workItem; |
572 | 573 | ||
@@ -627,6 +628,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | |||
627 | } | 628 | } |
628 | } | 629 | } |
629 | 630 | ||
631 | Console.WriteLine("Here9"); | ||
632 | |||
630 | lock (EventQueue) | 633 | lock (EventQueue) |
631 | { | 634 | { |
632 | workItem = m_CurrentWorkItem; | 635 | workItem = m_CurrentWorkItem; |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 0d9babb..5804aa8 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -483,7 +483,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
483 | /// <param name="instance"></param> | 483 | /// <param name="instance"></param> |
484 | /// <param name="keySelector">Basis on which to sort output. Can be null if no sort needs to take place</param> | 484 | /// <param name="keySelector">Basis on which to sort output. Can be null if no sort needs to take place</param> |
485 | private void HandleScriptsAction<TKey>( | 485 | private void HandleScriptsAction<TKey>( |
486 | string[] cmdparams, Action<IScriptInstance> action, Func<IScriptInstance, TKey> keySelector) | 486 | string[] cmdparams, Action<IScriptInstance> action, System.Func<IScriptInstance, TKey> keySelector) |
487 | { | 487 | { |
488 | if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_Scene)) | 488 | if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_Scene)) |
489 | return; | 489 | return; |
@@ -1517,7 +1517,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1517 | startInfo.MaxWorkerThreads = maxThreads; | 1517 | startInfo.MaxWorkerThreads = maxThreads; |
1518 | startInfo.MinWorkerThreads = minThreads; | 1518 | startInfo.MinWorkerThreads = minThreads; |
1519 | startInfo.ThreadPriority = threadPriority;; | 1519 | startInfo.ThreadPriority = threadPriority;; |
1520 | startInfo.StackSize = stackSize; | 1520 | startInfo.MaxStackSize = stackSize; |
1521 | startInfo.StartSuspended = true; | 1521 | startInfo.StartSuspended = true; |
1522 | 1522 | ||
1523 | m_ThreadPool = new SmartThreadPool(startInfo); | 1523 | m_ThreadPool = new SmartThreadPool(startInfo); |
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 | } |