aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-03-14 16:28:33 +0000
committerJustin Clarke Casey2008-03-14 16:28:33 +0000
commitdc84f350a763b3c5ba5a5b8ad173fde3867f24f4 (patch)
tree1953d18633bf3a3edc46fb6914914c555958217e
parent* You can leave godmode if you want now. (diff)
downloadopensim-SC_OLD-dc84f350a763b3c5ba5a5b8ad173fde3867f24f4.zip
opensim-SC_OLD-dc84f350a763b3c5ba5a5b8ad173fde3867f24f4.tar.gz
opensim-SC_OLD-dc84f350a763b3c5ba5a5b8ad173fde3867f24f4.tar.bz2
opensim-SC_OLD-dc84f350a763b3c5ba5a5b8ad173fde3867f24f4.tar.xz
* As yet incomplete fix for mantis #766 - terse updates broken
* Currently, terse updates are back, and extremely rapid linking and delinking will only break occasionally * More work to do here
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs8
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs12
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs10
3 files changed, 27 insertions, 3 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index e295f87..4c69930 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -947,6 +947,9 @@ namespace OpenSim.Region.Environment.Scenes
947 /// <param name="objectGroup">The group of prims which should be linked to this group</param> 947 /// <param name="objectGroup">The group of prims which should be linked to this group</param>
948 public void LinkToGroup(SceneObjectGroup objectGroup) 948 public void LinkToGroup(SceneObjectGroup objectGroup)
949 { 949 {
950 if (objectGroup.RootPart.UpdateFlag > 0)
951 return;
952
950 SceneObjectPart linkPart = objectGroup.m_rootPart; 953 SceneObjectPart linkPart = objectGroup.m_rootPart;
951 954
952 Vector3 oldGroupPosition = 955 Vector3 oldGroupPosition =
@@ -1014,10 +1017,13 @@ namespace OpenSim.Region.Environment.Scenes
1014 /// <param name="partID"></param> 1017 /// <param name="partID"></param>
1015 public void DelinkFromGroup(uint partID) 1018 public void DelinkFromGroup(uint partID)
1016 { 1019 {
1020 if (RootPart.UpdateFlag > 0)
1021 return;
1022
1017 SceneObjectPart linkPart = GetChildPart(partID); 1023 SceneObjectPart linkPart = GetChildPart(partID);
1018 1024
1019 if (null != linkPart) 1025 if (null != linkPart)
1020 { 1026 {
1021 LLQuaternion worldRot = linkPart.GetWorldRotation(); 1027 LLQuaternion worldRot = linkPart.GetWorldRotation();
1022 1028
1023 // Remove the part from this object 1029 // Remove the part from this object
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index 060003e..4fc688a 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -1114,7 +1114,17 @@ namespace OpenSim.Region.Environment.Scenes
1114 m_parentGroup.QueueForUpdateCheck(); 1114 m_parentGroup.QueueForUpdateCheck();
1115 } 1115 }
1116 1116
1117 TimeStampFull = (uint) Util.UnixTimeSinceEpoch(); 1117 int timeNow = Util.UnixTimeSinceEpoch();
1118
1119 if (timeNow == TimeStampFull)
1120 {
1121 TimeStampFull += 1;
1122 }
1123 else
1124 {
1125 TimeStampFull = (uint)timeNow;
1126 }
1127
1118 m_updateFlag = 2; 1128 m_updateFlag = 2;
1119 } 1129 }
1120 1130
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index fb0e836..44d2316 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -479,8 +479,12 @@ namespace OpenSim.Region.Environment.Scenes
479 // 479 //
480 // If we don't do this, various events (such as linking and delinking in the same 480 // If we don't do this, various events (such as linking and delinking in the same
481 // second), will stop working properly! 481 // second), will stop working properly!
482 if (update.LastFullUpdateTime <= part.TimeStampFull) 482 if (update.LastFullUpdateTime < part.TimeStampFull)
483 { 483 {
484// m_log.DebugFormat(
485// "[SCENE PRESENCE]: Fully updating prim {0}, {1} - part timestamp {2}",
486// part.Name, part.UUID, part.TimeStampFull);
487
484 //need to do a full update 488 //need to do a full update
485 part.SendFullUpdate(ControllingClient, GenerateClientFlags(part.UUID)); 489 part.SendFullUpdate(ControllingClient, GenerateClientFlags(part.UUID));
486 490
@@ -494,6 +498,10 @@ namespace OpenSim.Region.Environment.Scenes
494 } 498 }
495 else if (update.LastTerseUpdateTime <= part.TimeStampTerse) 499 else if (update.LastTerseUpdateTime <= part.TimeStampTerse)
496 { 500 {
501// m_log.DebugFormat(
502// "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}",
503// part.Name, part.UUID, part.TimeStampTerse);
504
497 part.SendTerseUpdate(ControllingClient); 505 part.SendTerseUpdate(ControllingClient);
498 506
499 update.LastTerseUpdateTime = part.TimeStampTerse; 507 update.LastTerseUpdateTime = part.TimeStampTerse;