aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorUbitUmarov2016-12-29 00:47:02 +0000
committerUbitUmarov2016-12-29 00:47:02 +0000
commit7cf2e812233d767b5a3573b74792aa28d6d91988 (patch)
tree8475d1f82451fd1ee9e1abba8ae812ba90aeff46 /OpenSim
parentadjust camera collision detection checks for new FS (diff)
downloadopensim-SC-7cf2e812233d767b5a3573b74792aa28d6d91988.zip
opensim-SC-7cf2e812233d767b5a3573b74792aa28d6d91988.tar.gz
opensim-SC-7cf2e812233d767b5a3573b74792aa28d6d91988.tar.bz2
opensim-SC-7cf2e812233d767b5a3573b74792aa28d6d91988.tar.xz
reinforce gc.collect on region load to also do pending finalizers
Diffstat (limited to 'OpenSim')
-rwxr-xr-xOpenSim/Region/Framework/Scenes/Scene.cs11
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs4
2 files changed, 9 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index e44f11a..d7a4ca4 100755
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1582,6 +1582,8 @@ namespace OpenSim.Region.Framework.Scenes
1582 } 1582 }
1583 1583
1584 GC.Collect(); 1584 GC.Collect();
1585 GC.WaitForPendingFinalizers();
1586 GC.Collect();
1585 // tell physics to finish building actor 1587 // tell physics to finish building actor
1586 m_sceneGraph.ProcessPhysicsPreSimulation(); 1588 m_sceneGraph.ProcessPhysicsPreSimulation();
1587 1589
@@ -1856,13 +1858,9 @@ namespace OpenSim.Region.Framework.Scenes
1856 1858
1857 if (!LoginsEnabled && Frame == 20) 1859 if (!LoginsEnabled && Frame == 20)
1858 { 1860 {
1859 // m_log.DebugFormat("{0} {1} {2}", LoginsDisabled, m_sceneGraph.GetActiveScriptsCount(), LoginLock);
1860
1861 // In 99.9% of cases it is a bad idea to manually force garbage collection. However,
1862 // this is a rare case where we know we have just went through a long cycle of heap
1863 // allocations, and there is no more work to be done until someone logs in
1864 GC.Collect(); 1861 GC.Collect();
1865 1862 GC.WaitForPendingFinalizers();
1863 GC.Collect();
1866 if (!LoginLock) 1864 if (!LoginLock)
1867 { 1865 {
1868 if (!StartDisabled) 1866 if (!StartDisabled)
@@ -1887,6 +1885,7 @@ namespace OpenSim.Region.Framework.Scenes
1887 // LoginLock can currently only be set by a region module implementation. 1885 // LoginLock can currently only be set by a region module implementation.
1888 // If somehow this hasn't been done then the quickest way to bugfix is to see the 1886 // If somehow this hasn't been done then the quickest way to bugfix is to see the
1889 // NullReferenceException 1887 // NullReferenceException
1888
1890 IRegionReadyModule rrm = RequestModuleInterface<IRegionReadyModule>(); 1889 IRegionReadyModule rrm = RequestModuleInterface<IRegionReadyModule>();
1891 rrm.TriggerRegionReady(this); 1890 rrm.TriggerRegionReady(this);
1892 } 1891 }
diff --git a/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs b/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs
index 870c0bb..1725eb4 100644
--- a/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs
@@ -214,6 +214,10 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
214 m_scene.EventManager.OnEmptyScriptCompileQueue -= OnEmptyScriptCompileQueue; 214 m_scene.EventManager.OnEmptyScriptCompileQueue -= OnEmptyScriptCompileQueue;
215 m_scene.LoginLock = false; 215 m_scene.LoginLock = false;
216 216
217 GC.Collect();
218 GC.WaitForPendingFinalizers();
219 GC.Collect();
220
217 if (!m_scene.StartDisabled) 221 if (!m_scene.StartDisabled)
218 { 222 {
219 m_scene.LoginsEnabled = true; 223 m_scene.LoginsEnabled = true;