aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Data/MySQL/MySQLUserData.cs6
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs11
2 files changed, 14 insertions, 3 deletions
diff --git a/OpenSim/Data/MySQL/MySQLUserData.cs b/OpenSim/Data/MySQL/MySQLUserData.cs
index 81acbfb..5f7db15 100644
--- a/OpenSim/Data/MySQL/MySQLUserData.cs
+++ b/OpenSim/Data/MySQL/MySQLUserData.cs
@@ -722,6 +722,12 @@ namespace OpenSim.Data.MySQL
722 reader.Dispose(); 722 reader.Dispose();
723 result.Dispose(); 723 result.Dispose();
724 724
725 if (null == appearance)
726 {
727 m_log.WarnFormat("[USER DB] No appearance found for user {0}", user.ToString());
728 return null;
729 }
730
725 appearance.SetAttachments(GetUserAttachments(user)); 731 appearance.SetAttachments(GetUserAttachments(user));
726 732
727 return appearance; 733 return appearance;
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index f58bba6..7428612 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -805,6 +805,11 @@ namespace OpenSim.Region.Environment.Scenes
805 805
806 m_controllingClient.MoveAgentIntoRegion(m_regionInfo, AbsolutePosition, look); 806 m_controllingClient.MoveAgentIntoRegion(m_regionInfo, AbsolutePosition, look);
807 807
808 // Moved this from SendInitialData to ensure that m_appearance is initialized
809 // before the inventory is processed in MakeRootAgent. This fixes a race condition
810 // related to the handling of attachments
811 m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance);
812
808 if (m_isChildAgent) 813 if (m_isChildAgent)
809 { 814 {
810 m_isChildAgent = false; 815 m_isChildAgent = false;
@@ -1712,14 +1717,14 @@ namespace OpenSim.Region.Environment.Scenes
1712 m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); 1717 m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
1713 } 1718 }
1714 1719
1715
1716 /// <summary> 1720 /// <summary>
1717 /// Do everything required once a client completes its movement into a region 1721 /// Do everything required once a client completes its movement into a region
1718 /// </summary> 1722 /// </summary>
1719 public void SendInitialData() 1723 public void SendInitialData()
1720 { 1724 {
1721 // Needed for standalone 1725 // Moved this into CompleteMovement to ensure that m_appearance is initialized before
1722 m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); 1726 // the inventory arrives
1727 // m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance);
1723 1728
1724 // Note: because Quaternion is a struct, it can't be null 1729 // Note: because Quaternion is a struct, it can't be null
1725 Quaternion rot = m_bodyRot; 1730 Quaternion rot = m_bodyRot;