fix crash in standalone mode for initial appearance setup
parent
01b5425a2d
commit
7a52b35c57
|
@ -1549,6 +1549,14 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
presence = m_restorePresences[client.AgentId];
|
||||
m_restorePresences.Remove(client.AgentId);
|
||||
|
||||
// This is one of two paths to create avatars that are
|
||||
// used. This tends to get called more in standalone
|
||||
// than grid, not really sure why, but as such needs
|
||||
// an explicity appearance lookup here.
|
||||
AvatarAppearance appearance = null;
|
||||
GetAvatarAppearance(client, out appearance);
|
||||
presence.Appearance = appearance;
|
||||
|
||||
presence.initializeScenePresence(client, RegionInfo, this);
|
||||
|
||||
m_innerScene.AddScenePresence(presence);
|
||||
|
@ -1789,10 +1797,8 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
return avatar;
|
||||
}
|
||||
|
||||
protected void GetAvatarAppearance(IClientAPI client, out AvatarAppearance appearance)
|
||||
public void GetAvatarAppearance(IClientAPI client, out AvatarAppearance appearance)
|
||||
{
|
||||
appearance = CommsManager.UserService.GetUserAppearance(client.AgentId);
|
||||
|
||||
if (m_AvatarFactory == null ||
|
||||
!m_AvatarFactory.TryGetAvatarAppearance(client.AgentId, out appearance))
|
||||
{
|
||||
|
|
|
@ -405,8 +405,6 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
RegisterToEvents();
|
||||
SetDirectionVectors();
|
||||
|
||||
m_appearance = m_scene.CommsManager.UserService.GetUserAppearance(client.AgentId);
|
||||
|
||||
try
|
||||
{
|
||||
m_scene.LandChannel.SendLandUpdate(this, true);
|
||||
|
@ -1445,6 +1443,9 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
/// </summary>
|
||||
public void SendInitialData()
|
||||
{
|
||||
// Needed for standalone
|
||||
m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance);
|
||||
|
||||
m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, LocalId,
|
||||
m_pos, m_appearance.Texture.ToBytes(), m_parentID);
|
||||
|
||||
|
@ -2049,7 +2050,6 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
m_controllingClient = client;
|
||||
m_regionInfo = region;
|
||||
m_scene = scene;
|
||||
m_appearance = m_scene.CommsManager.UserService.GetUserAppearance(client.AgentId);
|
||||
|
||||
RegisterToEvents();
|
||||
|
||||
|
|
|
@ -60,7 +60,10 @@ namespace OpenSim.Region.Modules.AvatarFactory
|
|||
public bool TryGetAvatarAppearance(LLUUID avatarId, out AvatarAppearance appearance)
|
||||
{
|
||||
appearance = m_scene.CommsManager.UserService.GetUserAppearance(avatarId);
|
||||
return true;
|
||||
if (appearance != null)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
||||
// //should only let one thread at a time do this part
|
||||
// EventWaitHandle waitHandle = null;
|
||||
|
|
Loading…
Reference in New Issue