aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authordiva2009-01-14 04:18:28 +0000
committerdiva2009-01-14 04:18:28 +0000
commit866c85be0d1c28b404e065b69eca64a8a86726a7 (patch)
treecb58e8db983ccb8a55320b8eadd33b8df664c114 /OpenSim
parentChange fake parcel ids to allow a Z coordinate. Change TP by lure (diff)
downloadopensim-SC-866c85be0d1c28b404e065b69eca64a8a86726a7.zip
opensim-SC-866c85be0d1c28b404e065b69eca64a8a86726a7.tar.gz
opensim-SC-866c85be0d1c28b404e065b69eca64a8a86726a7.tar.bz2
opensim-SC-866c85be0d1c28b404e065b69eca64a8a86726a7.tar.xz
Easy on locking m_scenePresences in RequestTeleportLocation. With the extra locks of SceneGraph ScenePresences introduced in 7982, this was making TPs not close the agent in the departing region due to locking. That locking problem seemed to occur only in Linux/mono -- I suspect a mono bug here.
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs11
1 files changed, 7 insertions, 4 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index a837fba..bbc6232 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -3139,13 +3139,16 @@ namespace OpenSim.Region.Environment.Scenes
3139 public void RequestTeleportLocation(IClientAPI remoteClient, ulong regionHandle, Vector3 position, 3139 public void RequestTeleportLocation(IClientAPI remoteClient, ulong regionHandle, Vector3 position,
3140 Vector3 lookAt, uint teleportFlags) 3140 Vector3 lookAt, uint teleportFlags)
3141 { 3141 {
3142 ScenePresence sp = null;
3142 lock (m_scenePresences) 3143 lock (m_scenePresences)
3143 { 3144 {
3144 if (m_scenePresences.ContainsKey(remoteClient.AgentId)) 3145 if (m_scenePresences.ContainsKey(remoteClient.AgentId))
3145 { 3146 sp = m_scenePresences[remoteClient.AgentId];
3146 m_sceneGridService.RequestTeleportToLocation(m_scenePresences[remoteClient.AgentId], regionHandle, 3147 }
3147 position, lookAt, teleportFlags); 3148 if (sp!= null)
3148 } 3149 {
3150 m_sceneGridService.RequestTeleportToLocation(sp, regionHandle,
3151 position, lookAt, teleportFlags);
3149 } 3152 }
3150 } 3153 }
3151 3154