diff options
author | Sean Dague | 2008-05-19 20:33:54 +0000 |
---|---|---|
committer | Sean Dague | 2008-05-19 20:33:54 +0000 |
commit | 7a52b35c574da5180131e1b5df613c4df09a5065 (patch) | |
tree | 0c2b3c01b419bba56d652176d82ec8faf6c73f6c | |
parent | Thank you kindly, Melanie for a patch that avoids a null (diff) | |
download | opensim-SC-7a52b35c574da5180131e1b5df613c4df09a5065.zip opensim-SC-7a52b35c574da5180131e1b5df613c4df09a5065.tar.gz opensim-SC-7a52b35c574da5180131e1b5df613c4df09a5065.tar.bz2 opensim-SC-7a52b35c574da5180131e1b5df613c4df09a5065.tar.xz |
fix crash in standalone mode for initial appearance setup
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 12 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs | 5 |
3 files changed, 16 insertions, 7 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index d02d22f..b2d45d1 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -1549,6 +1549,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
1549 | presence = m_restorePresences[client.AgentId]; | 1549 | presence = m_restorePresences[client.AgentId]; |
1550 | m_restorePresences.Remove(client.AgentId); | 1550 | m_restorePresences.Remove(client.AgentId); |
1551 | 1551 | ||
1552 | // This is one of two paths to create avatars that are | ||
1553 | // used. This tends to get called more in standalone | ||
1554 | // than grid, not really sure why, but as such needs | ||
1555 | // an explicity appearance lookup here. | ||
1556 | AvatarAppearance appearance = null; | ||
1557 | GetAvatarAppearance(client, out appearance); | ||
1558 | presence.Appearance = appearance; | ||
1559 | |||
1552 | presence.initializeScenePresence(client, RegionInfo, this); | 1560 | presence.initializeScenePresence(client, RegionInfo, this); |
1553 | 1561 | ||
1554 | m_innerScene.AddScenePresence(presence); | 1562 | m_innerScene.AddScenePresence(presence); |
@@ -1789,10 +1797,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1789 | return avatar; | 1797 | return avatar; |
1790 | } | 1798 | } |
1791 | 1799 | ||
1792 | protected void GetAvatarAppearance(IClientAPI client, out AvatarAppearance appearance) | 1800 | public void GetAvatarAppearance(IClientAPI client, out AvatarAppearance appearance) |
1793 | { | 1801 | { |
1794 | appearance = CommsManager.UserService.GetUserAppearance(client.AgentId); | ||
1795 | |||
1796 | if (m_AvatarFactory == null || | 1802 | if (m_AvatarFactory == null || |
1797 | !m_AvatarFactory.TryGetAvatarAppearance(client.AgentId, out appearance)) | 1803 | !m_AvatarFactory.TryGetAvatarAppearance(client.AgentId, out appearance)) |
1798 | { | 1804 | { |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index f7c9b8d..a913a98 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -405,8 +405,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
405 | RegisterToEvents(); | 405 | RegisterToEvents(); |
406 | SetDirectionVectors(); | 406 | SetDirectionVectors(); |
407 | 407 | ||
408 | m_appearance = m_scene.CommsManager.UserService.GetUserAppearance(client.AgentId); | ||
409 | |||
410 | try | 408 | try |
411 | { | 409 | { |
412 | m_scene.LandChannel.SendLandUpdate(this, true); | 410 | m_scene.LandChannel.SendLandUpdate(this, true); |
@@ -1445,6 +1443,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1445 | /// </summary> | 1443 | /// </summary> |
1446 | public void SendInitialData() | 1444 | public void SendInitialData() |
1447 | { | 1445 | { |
1446 | // Needed for standalone | ||
1447 | m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); | ||
1448 | |||
1448 | m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, LocalId, | 1449 | m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, LocalId, |
1449 | m_pos, m_appearance.Texture.ToBytes(), m_parentID); | 1450 | m_pos, m_appearance.Texture.ToBytes(), m_parentID); |
1450 | 1451 | ||
@@ -2049,7 +2050,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
2049 | m_controllingClient = client; | 2050 | m_controllingClient = client; |
2050 | m_regionInfo = region; | 2051 | m_regionInfo = region; |
2051 | m_scene = scene; | 2052 | m_scene = scene; |
2052 | m_appearance = m_scene.CommsManager.UserService.GetUserAppearance(client.AgentId); | ||
2053 | 2053 | ||
2054 | RegisterToEvents(); | 2054 | RegisterToEvents(); |
2055 | 2055 | ||
diff --git a/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs index 7dae702..837a4ec 100644 --- a/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs | |||
@@ -60,7 +60,10 @@ namespace OpenSim.Region.Modules.AvatarFactory | |||
60 | public bool TryGetAvatarAppearance(LLUUID avatarId, out AvatarAppearance appearance) | 60 | public bool TryGetAvatarAppearance(LLUUID avatarId, out AvatarAppearance appearance) |
61 | { | 61 | { |
62 | appearance = m_scene.CommsManager.UserService.GetUserAppearance(avatarId); | 62 | appearance = m_scene.CommsManager.UserService.GetUserAppearance(avatarId); |
63 | return true; | 63 | if (appearance != null) |
64 | return true; | ||
65 | else | ||
66 | return false; | ||
64 | 67 | ||
65 | // //should only let one thread at a time do this part | 68 | // //should only let one thread at a time do this part |
66 | // EventWaitHandle waitHandle = null; | 69 | // EventWaitHandle waitHandle = null; |