From 667197f24d1b9b050f1067f8a1fa757b7d46fdf6 Mon Sep 17 00:00:00 2001 From: Tedd Hansen Date: Sat, 2 Feb 2008 00:59:22 +0000 Subject: Added OpenSim.32BitLaunch.exe that can be used on 64-bit systems to run OpenSim in 32-bit mode. Fixed ScriptEngine.Common startup problems. --- .../Common/ScriptEngineBase/EventQueueManager.cs | 36 ++++++++++++---------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs') diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs index 7b10713..fb20f40 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/EventQueueManager.cs @@ -75,7 +75,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase /// Locking access to eventQueueThreads AND staticGlobalEventQueueThreads. /// Note that this may or may not be a reference to a static object depending on PrivateRegionThreads config setting. /// - private object eventQueueThreadsLock; + private object eventQueueThreadsLock = new object(); // Static objects for referencing the objects above if we don't have private threads: internal static List staticEventQueueThreads; // A static reference used if we don't use private threads internal static object staticEventQueueThreadsLock; // Statick lock object reference for same reason @@ -173,10 +173,11 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase { m_ScriptEngine = _ScriptEngine; + bool PrivateRegionThreads = m_ScriptEngine.ScriptConfigSource.GetBoolean("PrivateRegionThreads", false); // Create thread pool list and lock object // Determine from config if threads should be dedicated to regions or shared - if (m_ScriptEngine.ScriptConfigSource.GetBoolean("PrivateRegionThreads", false)) + if (PrivateRegionThreads) { // PRIVATE THREAD POOL PER REGION eventQueueThreads = new List(); @@ -185,13 +186,13 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase else { // SHARED THREAD POOL - // Crate the objects in statics + // Crate the static objects if (staticEventQueueThreads == null) staticEventQueueThreads = new List(); if (staticEventQueueThreadsLock == null) staticEventQueueThreadsLock = new object(); - // Create local reference to them + // Now reference our locals to them eventQueueThreads = staticEventQueueThreads; eventQueueThreadsLock = staticEventQueueThreadsLock; } @@ -228,22 +229,25 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase private void Stop() { - - // Kill worker threads - lock (eventQueueThreadsLock) + if (eventQueueThreadsLock != null && eventQueueThreads != null) { - foreach (EventQueueThreadClass EventQueueThread in eventQueueThreads) + // Kill worker threads + lock (eventQueueThreadsLock) { - AbortThreadClass(EventQueueThread); + foreach (EventQueueThreadClass EventQueueThread in eventQueueThreads) + { + AbortThreadClass(EventQueueThread); + } + eventQueueThreads.Clear(); + staticGlobalEventQueueThreads.Clear(); } - eventQueueThreads.Clear(); - staticGlobalEventQueueThreads.Clear(); - } - // Remove all entries from our event queue - lock (queueLock) - { - eventQueue.Clear(); } + + // Remove all entries from our event queue + lock (queueLock) + { + eventQueue.Clear(); + } } #endregion -- cgit v1.1