diff options
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 2f74253..87f0264 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -1067,6 +1067,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1067 | // May still need to signal neighbours whether child agents may need closing irrespective of whether this | 1067 | // May still need to signal neighbours whether child agents may need closing irrespective of whether this |
1068 | // one needed closing. Neighbour regions also contain logic to prevent a close if a subsequent move or | 1068 | // one needed closing. Neighbour regions also contain logic to prevent a close if a subsequent move or |
1069 | // teleport re-established the child connection. | 1069 | // teleport re-established the child connection. |
1070 | // | ||
1071 | // It may be possible to also close child agents after a pause but one needs to be very careful about | ||
1072 | // race conditions between different regions on rapid teleporting (e.g. from A1 to a non-neighbour B, back | ||
1073 | // to a neighbour A2 then off to a non-neighbour C. Also, closing child agents early may be more compatible | ||
1074 | // with complicated scenarios where there a mixture of V1 and V2 teleports, though this is conjecture. It's | ||
1075 | // easier to close immediately and greatly reduce the scope of race conditions if possible. | ||
1070 | sp.CloseChildAgents(newRegionX, newRegionY); | 1076 | sp.CloseChildAgents(newRegionX, newRegionY); |
1071 | 1077 | ||
1072 | // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone | 1078 | // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone |
@@ -1865,10 +1871,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1865 | List<ulong> newRegions = NewNeighbours(neighbourHandles, previousRegionNeighbourHandles); | 1871 | List<ulong> newRegions = NewNeighbours(neighbourHandles, previousRegionNeighbourHandles); |
1866 | List<ulong> oldRegions = OldNeighbours(neighbourHandles, previousRegionNeighbourHandles); | 1872 | List<ulong> oldRegions = OldNeighbours(neighbourHandles, previousRegionNeighbourHandles); |
1867 | 1873 | ||
1868 | Dump("Current Neighbors", neighbourHandles); | 1874 | // Dump("Current Neighbors", neighbourHandles); |
1869 | Dump("Previous Neighbours", previousRegionNeighbourHandles); | 1875 | // Dump("Previous Neighbours", previousRegionNeighbourHandles); |
1870 | Dump("New Neighbours", newRegions); | 1876 | // Dump("New Neighbours", newRegions); |
1871 | Dump("Old Neighbours", oldRegions); | 1877 | // Dump("Old Neighbours", oldRegions); |
1872 | 1878 | ||
1873 | /// Update the scene presence's known regions here on this region | 1879 | /// Update the scene presence's known regions here on this region |
1874 | sp.DropOldNeighbours(oldRegions); | 1880 | sp.DropOldNeighbours(oldRegions); |
@@ -2180,18 +2186,18 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
2180 | return handles; | 2186 | return handles; |
2181 | } | 2187 | } |
2182 | 2188 | ||
2183 | private void Dump(string msg, List<ulong> handles) | 2189 | // private void Dump(string msg, List<ulong> handles) |
2184 | { | 2190 | // { |
2185 | m_log.InfoFormat("-------------- HANDLE DUMP ({0}) ---------", msg); | 2191 | // m_log.InfoFormat("-------------- HANDLE DUMP ({0}) ---------", msg); |
2186 | foreach (ulong handle in handles) | 2192 | // foreach (ulong handle in handles) |
2187 | { | 2193 | // { |
2188 | uint x, y; | 2194 | // uint x, y; |
2189 | Utils.LongToUInts(handle, out x, out y); | 2195 | // Utils.LongToUInts(handle, out x, out y); |
2190 | x = x / Constants.RegionSize; | 2196 | // x = x / Constants.RegionSize; |
2191 | y = y / Constants.RegionSize; | 2197 | // y = y / Constants.RegionSize; |
2192 | m_log.InfoFormat("({0}, {1})", x, y); | 2198 | // m_log.InfoFormat("({0}, {1})", x, y); |
2193 | } | 2199 | // } |
2194 | } | 2200 | // } |
2195 | 2201 | ||
2196 | #endregion | 2202 | #endregion |
2197 | 2203 | ||