aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-11-15 20:26:42 +0000
committerJustin Clark-Casey (justincc)2011-11-15 20:26:42 +0000
commit828e4a5b093c6a67302776137fc0bdbcfded4c9b (patch)
tree2e23acc14ca786cb9f5484004222e03829bdfc60 /OpenSim/Region/Framework
parentInstead of having scene add/remove collision events directly to the OdeScene ... (diff)
downloadopensim-SC_OLD-828e4a5b093c6a67302776137fc0bdbcfded4c9b.zip
opensim-SC_OLD-828e4a5b093c6a67302776137fc0bdbcfded4c9b.tar.gz
opensim-SC_OLD-828e4a5b093c6a67302776137fc0bdbcfded4c9b.tar.bz2
opensim-SC_OLD-828e4a5b093c6a67302776137fc0bdbcfded4c9b.tar.xz
Add comments about trying to avoid synchronous work off the EventManager.OnMakeRootAgent event since this is on the critical path for transfer of avatars from one region to another.
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs13
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs3
2 files changed, 12 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index bf9ad65..4906665 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -212,10 +212,15 @@ namespace OpenSim.Region.Framework.Scenes
212 public delegate void OnMakeChildAgentDelegate(ScenePresence presence); 212 public delegate void OnMakeChildAgentDelegate(ScenePresence presence);
213 public event OnMakeChildAgentDelegate OnMakeChildAgent; 213 public event OnMakeChildAgentDelegate OnMakeChildAgent;
214 214
215 public delegate void OnMakeRootAgentDelegate(ScenePresence presence);
216 public delegate void OnSaveNewWindlightProfileDelegate(); 215 public delegate void OnSaveNewWindlightProfileDelegate();
217 public delegate void OnSendNewWindlightProfileTargetedDelegate(RegionLightShareData wl, UUID user); 216 public delegate void OnSendNewWindlightProfileTargetedDelegate(RegionLightShareData wl, UUID user);
218 public event OnMakeRootAgentDelegate OnMakeRootAgent; 217
218 /// <summary>
219 /// This event is on the critical path for transferring an avatar from one region to another. Try and do
220 /// as little work on this event as possible, or do work asynchronously.
221 /// </summary>
222 public event Action<ScenePresence> OnMakeRootAgent;
223
219 public event OnSendNewWindlightProfileTargetedDelegate OnSendNewWindlightProfileTargeted; 224 public event OnSendNewWindlightProfileTargetedDelegate OnSendNewWindlightProfileTargeted;
220 public event OnSaveNewWindlightProfileDelegate OnSaveNewWindlightProfile; 225 public event OnSaveNewWindlightProfileDelegate OnSaveNewWindlightProfile;
221 226
@@ -1322,10 +1327,10 @@ namespace OpenSim.Region.Framework.Scenes
1322 1327
1323 public void TriggerOnMakeRootAgent(ScenePresence presence) 1328 public void TriggerOnMakeRootAgent(ScenePresence presence)
1324 { 1329 {
1325 OnMakeRootAgentDelegate handlerMakeRootAgent = OnMakeRootAgent; 1330 Action<ScenePresence> handlerMakeRootAgent = OnMakeRootAgent;
1326 if (handlerMakeRootAgent != null) 1331 if (handlerMakeRootAgent != null)
1327 { 1332 {
1328 foreach (OnMakeRootAgentDelegate d in handlerMakeRootAgent.GetInvocationList()) 1333 foreach (Action<ScenePresence> d in handlerMakeRootAgent.GetInvocationList())
1329 { 1334 {
1330 try 1335 try
1331 { 1336 {
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 189394e..5587073 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -865,6 +865,9 @@ namespace OpenSim.Region.Framework.Scenes
865 /// avatar is actual in the sim. They can perform all actions. 865 /// avatar is actual in the sim. They can perform all actions.
866 /// This change is made whenever an avatar enters a region, whether by crossing over from a neighbouring sim, 866 /// This change is made whenever an avatar enters a region, whether by crossing over from a neighbouring sim,
867 /// teleporting in or on initial login. 867 /// teleporting in or on initial login.
868 ///
869 /// This method is on the critical path for transferring an avatar from one region to another. Delay here
870 /// delays that crossing.
868 /// </summary> 871 /// </summary>
869 public void MakeRootAgent(Vector3 pos, bool isFlying) 872 public void MakeRootAgent(Vector3 pos, bool isFlying)
870 { 873 {