aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs41
1 files changed, 31 insertions, 10 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index f3b923f..4fb9a1b 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -866,7 +866,6 @@ namespace OpenSim.Region.Framework.Scenes
866 866
867 //m_log.DebugFormat("[SCENE]: known regions in {0}: {1}", Scene.RegionInfo.RegionName, KnownChildRegionHandles.Count); 867 //m_log.DebugFormat("[SCENE]: known regions in {0}: {1}", Scene.RegionInfo.RegionName, KnownChildRegionHandles.Count);
868 868
869 bool wasChild = IsChildAgent;
870 IsChildAgent = false; 869 IsChildAgent = false;
871 870
872 IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); 871 IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>();
@@ -952,18 +951,40 @@ namespace OpenSim.Region.Framework.Scenes
952 // and it has already rezzed the attachments and started their scripts. 951 // and it has already rezzed the attachments and started their scripts.
953 // We do the following only for non-login agents, because their scripts 952 // We do the following only for non-login agents, because their scripts
954 // haven't started yet. 953 // haven't started yet.
955 lock (m_attachments) 954 if ((TeleportFlags & TeleportFlags.ViaLogin) != 0)
955 {
956 // We leave a 5 second pause before attempting to rez attachments to avoid a clash with
957 // version 3 viewers that maybe doing their own attachment rezzing related to their current
958 // outfit folder on startup. If these operations do clash, then the symptoms are invisible
959 // attachments until one zooms in on the avatar.
960 //
961 // We do not pause if we are launching on the same thread anyway in order to avoid pointlessly
962 // delaying any attachment related regression tests.
963 if (Scene.AttachmentsModule != null)
964 Util.FireAndForget(
965 o =>
966 {
967 if (Util.FireAndForgetMethod != FireAndForgetMethod.None)
968 System.Threading.Thread.Sleep(5000);
969
970 Scene.AttachmentsModule.RezAttachments(this);
971 });
972 }
973 else
956 { 974 {
957 if (wasChild && HasAttachments()) 975 lock (m_attachments)
958 { 976 {
959 m_log.DebugFormat( 977 if (HasAttachments())
960 "[SCENE PRESENCE]: Restarting scripts in attachments for {0} in {1}", Name, Scene.Name);
961
962 // Resume scripts
963 foreach (SceneObjectGroup sog in m_attachments)
964 { 978 {
965 sog.RootPart.ParentGroup.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, GetStateSource()); 979 m_log.DebugFormat(
966 sog.ResumeScripts(); 980 "[SCENE PRESENCE]: Restarting scripts in attachments for {0} in {1}", Name, Scene.Name);
981
982 // Resume scripts
983 foreach (SceneObjectGroup sog in m_attachments)
984 {
985 sog.RootPart.ParentGroup.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, GetStateSource());
986 sog.ResumeScripts();
987 }
967 } 988 }
968 } 989 }
969 } 990 }