aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs57
1 files changed, 39 insertions, 18 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 45d512b..218d4e4 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1300,6 +1300,12 @@ namespace OpenSim.Region.Framework.Scenes
1300 // This is the method that shuts down the scene. 1300 // This is the method that shuts down the scene.
1301 public override void Close() 1301 public override void Close()
1302 { 1302 {
1303 if (m_shuttingDown)
1304 {
1305 m_log.WarnFormat("[SCENE]: Ignoring close request because already closing {0}", Name);
1306 return;
1307 }
1308
1303 m_log.InfoFormat("[SCENE]: Closing down the single simulator: {0}", RegionInfo.RegionName); 1309 m_log.InfoFormat("[SCENE]: Closing down the single simulator: {0}", RegionInfo.RegionName);
1304 1310
1305 StatsReporter.Close(); 1311 StatsReporter.Close();
@@ -1343,6 +1349,14 @@ namespace OpenSim.Region.Framework.Scenes
1343 1349
1344 m_sceneGraph.Close(); 1350 m_sceneGraph.Close();
1345 1351
1352 if (!GridService.DeregisterRegion(RegionInfo.RegionID))
1353 m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", Name);
1354
1355 base.Close();
1356
1357 // XEngine currently listens to the EventManager.OnShutdown event to trigger script stop and persistence.
1358 // Therefore. we must dispose of the PhysicsScene after this to prevent a window where script code can
1359 // attempt to reference a null or disposed physics scene.
1346 if (PhysicsScene != null) 1360 if (PhysicsScene != null)
1347 { 1361 {
1348 PhysicsScene phys = PhysicsScene; 1362 PhysicsScene phys = PhysicsScene;
@@ -1351,12 +1365,6 @@ namespace OpenSim.Region.Framework.Scenes
1351 phys.Dispose(); 1365 phys.Dispose();
1352 phys = null; 1366 phys = null;
1353 } 1367 }
1354
1355 if (!GridService.DeregisterRegion(RegionInfo.RegionID))
1356 m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", Name);
1357
1358 // call the base class Close method.
1359 base.Close();
1360 } 1368 }
1361 1369
1362 /// <summary> 1370 /// <summary>
@@ -3595,9 +3603,10 @@ namespace OpenSim.Region.Framework.Scenes
3595 if (closeChildAgents && CapsModule != null) 3603 if (closeChildAgents && CapsModule != null)
3596 CapsModule.RemoveCaps(agentID); 3604 CapsModule.RemoveCaps(agentID);
3597 3605
3598 // REFACTORING PROBLEM -- well not really a problem, but just to point out that whatever 3606// // REFACTORING PROBLEM -- well not really a problem, but just to point out that whatever
3599 // this method is doing is HORRIBLE!!! 3607// // this method is doing is HORRIBLE!!!
3600 avatar.Scene.NeedSceneCacheClear(avatar.UUID); 3608 // Commented pending deletion since this method no longer appears to do anything at all
3609// avatar.Scene.NeedSceneCacheClear(avatar.UUID);
3601 3610
3602 if (closeChildAgents && !isChildAgent) 3611 if (closeChildAgents && !isChildAgent)
3603 { 3612 {
@@ -4899,13 +4908,24 @@ namespace OpenSim.Region.Framework.Scenes
4899 /// Get a group via its UUID 4908 /// Get a group via its UUID
4900 /// </summary> 4909 /// </summary>
4901 /// <param name="fullID"></param> 4910 /// <param name="fullID"></param>
4902 /// <returns>null if no group with that name exists</returns> 4911 /// <returns>null if no group with that id exists</returns>
4903 public SceneObjectGroup GetSceneObjectGroup(UUID fullID) 4912 public SceneObjectGroup GetSceneObjectGroup(UUID fullID)
4904 { 4913 {
4905 return m_sceneGraph.GetSceneObjectGroup(fullID); 4914 return m_sceneGraph.GetSceneObjectGroup(fullID);
4906 } 4915 }
4907 4916
4908 /// <summary> 4917 /// <summary>
4918 /// Get a group via its local ID
4919 /// </summary>
4920 /// <remarks>This will only return a group if the local ID matches a root part</remarks>
4921 /// <param name="localID"></param>
4922 /// <returns>null if no group with that id exists</returns>
4923 public SceneObjectGroup GetSceneObjectGroup(uint localID)
4924 {
4925 return m_sceneGraph.GetSceneObjectGroup(localID);
4926 }
4927
4928 /// <summary>
4909 /// Get a group by name from the scene (will return the first 4929 /// Get a group by name from the scene (will return the first
4910 /// found, if there are more than one prim with the same name) 4930 /// found, if there are more than one prim with the same name)
4911 /// </summary> 4931 /// </summary>
@@ -5065,14 +5085,15 @@ namespace OpenSim.Region.Framework.Scenes
5065 client.SendRegionHandle(regionID, handle); 5085 client.SendRegionHandle(regionID, handle);
5066 } 5086 }
5067 5087
5068 public bool NeedSceneCacheClear(UUID agentID) 5088// Commented pending deletion since this method no longer appears to do anything at all
5069 { 5089// public bool NeedSceneCacheClear(UUID agentID)
5070 IInventoryTransferModule inv = RequestModuleInterface<IInventoryTransferModule>(); 5090// {
5071 if (inv == null) 5091// IInventoryTransferModule inv = RequestModuleInterface<IInventoryTransferModule>();
5072 return true; 5092// if (inv == null)
5073 5093// return true;
5074 return inv.NeedSceneCacheClear(agentID, this); 5094//
5075 } 5095// return inv.NeedSceneCacheClear(agentID, this);
5096// }
5076 5097
5077 public void CleanTempObjects() 5098 public void CleanTempObjects()
5078 { 5099 {