aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
authorUbitUmarov2017-01-18 02:29:05 +0000
committerUbitUmarov2017-01-18 02:29:05 +0000
commite2c2d92d5aba757e459d0362c9b7392b528d5c8d (patch)
tree40afea5b0da8cc5996476384371f4dff1f74befa /OpenSim/Region/Framework/Scenes/ScenePresence.cs
parentPermissions module: fix in prim inv CanEditNotecard group edit rights check (... (diff)
downloadopensim-SC_OLD-e2c2d92d5aba757e459d0362c9b7392b528d5c8d.zip
opensim-SC_OLD-e2c2d92d5aba757e459d0362c9b7392b528d5c8d.tar.gz
opensim-SC_OLD-e2c2d92d5aba757e459d0362c9b7392b528d5c8d.tar.bz2
opensim-SC_OLD-e2c2d92d5aba757e459d0362c9b7392b528d5c8d.tar.xz
antecipate baked cache check and Xbakes requests, so they happen before viewer check request (or force it to wait via locking).
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs59
1 files changed, 33 insertions, 26 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 9545c13..c4d4f8f 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2029,11 +2029,6 @@ namespace OpenSim.Region.Framework.Scenes
2029 m_log.DebugFormat("[CompleteMovement]: Missing COF for {0} is {1}", client.AgentId, COF); 2029 m_log.DebugFormat("[CompleteMovement]: Missing COF for {0} is {1}", client.AgentId, COF);
2030 } 2030 }
2031 2031
2032 // Tell the client that we're totally ready
2033 ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look);
2034
2035 m_log.DebugFormat("[CompleteMovement] MoveAgentIntoRegion: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2036
2037 if (!string.IsNullOrEmpty(m_callbackURI)) 2032 if (!string.IsNullOrEmpty(m_callbackURI))
2038 { 2033 {
2039 // We cannot sleep here since this would hold up the inbound packet processing thread, as 2034 // We cannot sleep here since this would hold up the inbound packet processing thread, as
@@ -2054,6 +2049,7 @@ namespace OpenSim.Region.Framework.Scenes
2054 2049
2055 Scene.SimulationService.ReleaseAgent(originID, UUID, m_callbackURI); 2050 Scene.SimulationService.ReleaseAgent(originID, UUID, m_callbackURI);
2056 m_callbackURI = null; 2051 m_callbackURI = null;
2052 m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2057 } 2053 }
2058// else 2054// else
2059// { 2055// {
@@ -2062,19 +2058,48 @@ namespace OpenSim.Region.Framework.Scenes
2062// client.Name, client.AgentId, m_scene.RegionInfo.RegionName); 2058// client.Name, client.AgentId, m_scene.RegionInfo.RegionName);
2063// } 2059// }
2064 2060
2065 m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts)); 2061
2062 // Tell the client that we're totally ready
2063 ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look);
2064 m_log.DebugFormat("[CompleteMovement] MoveAgentIntoRegion: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2065
2066 bool isHGTP = (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0;
2067
2068 int delayctnr = Util.EnvironmentTickCount();
2069
2070 if (!IsChildAgent)
2071 {
2072 // verify baked textures and cache
2073 bool cachedbaked = false;
2074
2075 if (IsNPC)
2076 cachedbaked = true;
2077 else
2078 {
2079 if (m_scene.AvatarFactory != null && !isHGTP)
2080 cachedbaked = m_scene.AvatarFactory.ValidateBakedTextureCache(this);
2081
2082 // not sure we need this
2083 if (!cachedbaked)
2084 {
2085 if (m_scene.AvatarFactory != null)
2086 m_scene.AvatarFactory.QueueAppearanceSave(UUID);
2087 }
2088 }
2089 m_log.DebugFormat("[CompleteMovement] Baked check: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2090 }
2066 2091
2067 if(m_teleportFlags > 0) 2092 if(m_teleportFlags > 0)
2068 { 2093 {
2069 gotCrossUpdate = false; // sanity check 2094 gotCrossUpdate = false; // sanity check
2070 Thread.Sleep(500); // let viewers catch us 2095 if(Util.EnvironmentTickCountSubtract(delayctnr)< 500)
2096 Thread.Sleep(500); // let viewers catch us
2071 } 2097 }
2072 2098
2073 if(!gotCrossUpdate) 2099 if(!gotCrossUpdate)
2074 RotateToLookAt(look); 2100 RotateToLookAt(look);
2075 2101
2076 // HG 2102 // HG
2077 bool isHGTP = (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0;
2078 if(isHGTP) 2103 if(isHGTP)
2079 { 2104 {
2080// ControllingClient.SendNameReply(m_uuid, Firstname, Lastname); 2105// ControllingClient.SendNameReply(m_uuid, Firstname, Lastname);
@@ -2101,24 +2126,6 @@ namespace OpenSim.Region.Framework.Scenes
2101 2126
2102 if (!IsChildAgent) 2127 if (!IsChildAgent)
2103 { 2128 {
2104 // verify baked textures and cache
2105 bool cachedbaked = false;
2106
2107 if (IsNPC)
2108 cachedbaked = true;
2109 else
2110 {
2111 if (m_scene.AvatarFactory != null && !isHGTP)
2112 cachedbaked = m_scene.AvatarFactory.ValidateBakedTextureCache(this);
2113
2114 // not sure we need this
2115 if (!cachedbaked)
2116 {
2117 if (m_scene.AvatarFactory != null)
2118 m_scene.AvatarFactory.QueueAppearanceSave(UUID);
2119 }
2120 }
2121
2122 List<ScenePresence> allpresences = m_scene.GetScenePresences(); 2129 List<ScenePresence> allpresences = m_scene.GetScenePresences();
2123 2130
2124 // send avatar object to all presences including us, so they cross it into region 2131 // send avatar object to all presences including us, so they cross it into region