aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorSean Dague2008-05-19 20:33:54 +0000
committerSean Dague2008-05-19 20:33:54 +0000
commit7a52b35c574da5180131e1b5df613c4df09a5065 (patch)
tree0c2b3c01b419bba56d652176d82ec8faf6c73f6c
parentThank you kindly, Melanie for a patch that avoids a null (diff)
downloadopensim-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.cs12
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs6
-rw-r--r--OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs5
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;