diff options
author | Melanie | 2012-02-25 12:25:16 +0100 |
---|---|---|
committer | Melanie | 2012-02-25 12:25:16 +0100 |
commit | 5eb1679367754d530edb4c50d432847ed1a027af (patch) | |
tree | 7fb472108b607edffbb07262ff044c7aa05aef50 | |
parent | Merge branch 'ubitwork' (diff) | |
download | opensim-SC_OLD-5eb1679367754d530edb4c50d432847ed1a027af.zip opensim-SC_OLD-5eb1679367754d530edb4c50d432847ed1a027af.tar.gz opensim-SC_OLD-5eb1679367754d530edb4c50d432847ed1a027af.tar.bz2 opensim-SC_OLD-5eb1679367754d530edb4c50d432847ed1a027af.tar.xz |
Delay the sending of the initial werables update until the inventory and
VFS in the viewer are ready. We're much faster than SL and that exposes this
race condition. Also reinstate the extra avatar data send on login
-rw-r--r-- | OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | 17 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 3 |
2 files changed, 12 insertions, 8 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index b0cee03..93e22e0 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | |||
@@ -551,12 +551,17 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
551 | /// <param name="client"></param> | 551 | /// <param name="client"></param> |
552 | private void Client_OnRequestWearables(IClientAPI client) | 552 | private void Client_OnRequestWearables(IClientAPI client) |
553 | { | 553 | { |
554 | // m_log.DebugFormat("[AVFACTORY]: Client_OnRequestWearables called for {0} ({1})", client.Name, client.AgentId); | 554 | Util.FireAndForget(delegate(object x) |
555 | ScenePresence sp = m_scene.GetScenePresence(client.AgentId); | 555 | { |
556 | if (sp != null) | 556 | Thread.Sleep(2000); |
557 | client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++); | 557 | |
558 | else | 558 | // m_log.DebugFormat("[AVFACTORY]: Client_OnRequestWearables called for {0} ({1})", client.Name, client.AgentId); |
559 | m_log.WarnFormat("[AVFACTORY]: Client_OnRequestWearables unable to find presence for {0}", client.AgentId); | 559 | ScenePresence sp = m_scene.GetScenePresence(client.AgentId); |
560 | if (sp != null) | ||
561 | client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++); | ||
562 | else | ||
563 | m_log.WarnFormat("[AVFACTORY]: Client_OnRequestWearables unable to find presence for {0}", client.AgentId); | ||
564 | }); | ||
560 | } | 565 | } |
561 | 566 | ||
562 | /// <summary> | 567 | /// <summary> |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 01053bf..26fa6c0 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1000,8 +1000,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1000 | } | 1000 | } |
1001 | } | 1001 | } |
1002 | 1002 | ||
1003 | if (wasChild) | 1003 | SendAvatarDataToAllAgents(); |
1004 | SendAvatarDataToAllAgents(); | ||
1005 | 1004 | ||
1006 | // send the animations of the other presences to me | 1005 | // send the animations of the other presences to me |
1007 | m_scene.ForEachRootScenePresence(delegate(ScenePresence presence) | 1006 | m_scene.ForEachRootScenePresence(delegate(ScenePresence presence) |