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
avinationmerge
Melanie 2012-02-25 12:25:16 +01:00
parent 70b4bc8cf5
commit 5eb1679367
2 changed files with 12 additions and 8 deletions

View File

@ -551,12 +551,17 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
/// <param name="client"></param> /// <param name="client"></param>
private void Client_OnRequestWearables(IClientAPI client) private void Client_OnRequestWearables(IClientAPI client)
{ {
// m_log.DebugFormat("[AVFACTORY]: Client_OnRequestWearables called for {0} ({1})", client.Name, client.AgentId); Util.FireAndForget(delegate(object x)
ScenePresence sp = m_scene.GetScenePresence(client.AgentId); {
if (sp != null) Thread.Sleep(2000);
client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++);
else // m_log.DebugFormat("[AVFACTORY]: Client_OnRequestWearables called for {0} ({1})", client.Name, client.AgentId);
m_log.WarnFormat("[AVFACTORY]: Client_OnRequestWearables unable to find presence for {0}", client.AgentId); ScenePresence sp = m_scene.GetScenePresence(client.AgentId);
if (sp != null)
client.SendWearables(sp.Appearance.Wearables, sp.Appearance.Serial++);
else
m_log.WarnFormat("[AVFACTORY]: Client_OnRequestWearables unable to find presence for {0}", client.AgentId);
});
} }
/// <summary> /// <summary>

View File

@ -1000,8 +1000,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
if (wasChild) SendAvatarDataToAllAgents();
SendAvatarDataToAllAgents();
// send the animations of the other presences to me // send the animations of the other presences to me
m_scene.ForEachRootScenePresence(delegate(ScenePresence presence) m_scene.ForEachRootScenePresence(delegate(ScenePresence presence)