diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 36e98cf..4f44d36 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -1479,7 +1479,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
1479 | m_sceneGridService.LogOffUser(agentID, RegionInfo.RegionID, RegionInfo.RegionHandle, | 1479 | m_sceneGridService.LogOffUser(agentID, RegionInfo.RegionID, RegionInfo.RegionHandle, |
1480 | avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y, | 1480 | avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y, |
1481 | avatar.AbsolutePosition.Z); | 1481 | avatar.AbsolutePosition.Z); |
1482 | m_sceneGridService.SendCloseChildAgentConnections(avatar); | 1482 | List<ulong> childknownRegions = new List<ulong>(); |
1483 | List<ulong> ckn = avatar.GetKnownRegionList(); | ||
1484 | for (int i = 0; i < ckn.Count; i++) | ||
1485 | { | ||
1486 | childknownRegions.Add(ckn[i]); | ||
1487 | } | ||
1488 | m_sceneGridService.SendCloseChildAgentConnections(agentID, childknownRegions); | ||
1483 | } | 1489 | } |
1484 | 1490 | ||
1485 | m_eventManager.TriggerClientClosed(agentID); | 1491 | m_eventManager.TriggerClientClosed(agentID); |
@@ -1554,6 +1560,22 @@ namespace OpenSim.Region.Environment.Scenes | |||
1554 | //m_log.InfoFormat("[SCENE] Memory pre GC {0}", System.GC.GetTotalMemory(false)); | 1560 | //m_log.InfoFormat("[SCENE] Memory pre GC {0}", System.GC.GetTotalMemory(false)); |
1555 | //m_log.InfoFormat("[SCENE] Memory post GC {0}", System.GC.GetTotalMemory(true)); | 1561 | //m_log.InfoFormat("[SCENE] Memory post GC {0}", System.GC.GetTotalMemory(true)); |
1556 | } | 1562 | } |
1563 | public void HandleRemoveKnownRegionsFromAvatar(LLUUID avatarID, List<ulong> regionslst) | ||
1564 | { | ||
1565 | ScenePresence av = GetScenePresence(avatarID); | ||
1566 | if (av != null) | ||
1567 | { | ||
1568 | lock (av) | ||
1569 | { | ||
1570 | |||
1571 | for (int i = 0; i < regionslst.Count; i++) | ||
1572 | { | ||
1573 | av.KnownChildRegions.Remove(regionslst[i]); | ||
1574 | } | ||
1575 | } | ||
1576 | } | ||
1577 | |||
1578 | } | ||
1557 | 1579 | ||
1558 | public override void CloseAllAgents(uint circuitcode) | 1580 | public override void CloseAllAgents(uint circuitcode) |
1559 | { | 1581 | { |
@@ -1607,6 +1629,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1607 | m_sceneGridService.OnRegionUp += OtherRegionUp; | 1629 | m_sceneGridService.OnRegionUp += OtherRegionUp; |
1608 | m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; | 1630 | m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; |
1609 | m_sceneGridService.OnExpectPrim += IncomingInterRegionPrimGroup; | 1631 | m_sceneGridService.OnExpectPrim += IncomingInterRegionPrimGroup; |
1632 | m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar; | ||
1610 | 1633 | ||
1611 | 1634 | ||
1612 | 1635 | ||
@@ -1620,6 +1643,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1620 | /// </summary> | 1643 | /// </summary> |
1621 | public void UnRegisterReginWithComms() | 1644 | public void UnRegisterReginWithComms() |
1622 | { | 1645 | { |
1646 | m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; | ||
1623 | m_sceneGridService.OnExpectPrim -= IncomingInterRegionPrimGroup; | 1647 | m_sceneGridService.OnExpectPrim -= IncomingInterRegionPrimGroup; |
1624 | m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; | 1648 | m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; |
1625 | m_sceneGridService.OnRegionUp -= OtherRegionUp; | 1649 | m_sceneGridService.OnRegionUp -= OtherRegionUp; |