aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorDan Lake2011-12-13 21:37:17 -0800
committerDan Lake2011-12-13 21:37:17 -0800
commit39736e52d87d9e04092262c1a41e3c434f087e36 (patch)
tree619dec7e6bf4653fe7b7c06aac444aa664ea86ef /OpenSim/Region/Framework
parentIn AvatarFactoryModule.SetApperance(), perform ValidateBakedTextureCache() in... (diff)
downloadopensim-SC-39736e52d87d9e04092262c1a41e3c434f087e36.zip
opensim-SC-39736e52d87d9e04092262c1a41e3c434f087e36.tar.gz
opensim-SC-39736e52d87d9e04092262c1a41e3c434f087e36.tar.bz2
opensim-SC-39736e52d87d9e04092262c1a41e3c434f087e36.tar.xz
Reorder clearing of upate schedule on SOP to before sending updates. Fix potential race condition.
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs14
1 files changed, 3 insertions, 11 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index c8b39a4..f5a00d7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -259,8 +259,6 @@ namespace OpenSim.Region.Framework.Scenes
259 259
260 private bool m_passTouches; 260 private bool m_passTouches;
261 261
262 private UpdateRequired m_updateFlag;
263
264 private PhysicsActor m_physActor; 262 private PhysicsActor m_physActor;
265 protected Vector3 m_acceleration; 263 protected Vector3 m_acceleration;
266 protected Vector3 m_angularVelocity; 264 protected Vector3 m_angularVelocity;
@@ -1004,11 +1002,7 @@ namespace OpenSim.Region.Framework.Scenes
1004 } 1002 }
1005 } 1003 }
1006 1004
1007 public UpdateRequired UpdateFlag 1005 public UpdateRequired UpdateFlag { get; set; }
1008 {
1009 get { return m_updateFlag; }
1010 set { m_updateFlag = value; }
1011 }
1012 1006
1013 /// <summary> 1007 /// <summary>
1014 /// Used for media on a prim. 1008 /// Used for media on a prim.
@@ -2949,6 +2943,7 @@ namespace OpenSim.Region.Framework.Scenes
2949 { 2943 {
2950 case UpdateRequired.TERSE: 2944 case UpdateRequired.TERSE:
2951 { 2945 {
2946 ClearUpdateSchedule();
2952 // Throw away duplicate or insignificant updates 2947 // Throw away duplicate or insignificant updates
2953 if (!RotationOffset.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || 2948 if (!RotationOffset.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) ||
2954 !Acceleration.Equals(m_lastAcceleration) || 2949 !Acceleration.Equals(m_lastAcceleration) ||
@@ -2958,9 +2953,7 @@ namespace OpenSim.Region.Framework.Scenes
2958 !OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) || 2953 !OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) ||
2959 Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) 2954 Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE)
2960 { 2955 {
2961
2962 SendTerseUpdateToAllClients(); 2956 SendTerseUpdateToAllClients();
2963 ClearUpdateSchedule();
2964 2957
2965 // Update the "last" values 2958 // Update the "last" values
2966 m_lastPosition = OffsetPosition; 2959 m_lastPosition = OffsetPosition;
@@ -2974,12 +2967,11 @@ namespace OpenSim.Region.Framework.Scenes
2974 } 2967 }
2975 case UpdateRequired.FULL: 2968 case UpdateRequired.FULL:
2976 { 2969 {
2970 ClearUpdateSchedule();
2977 SendFullUpdateToAllClients(); 2971 SendFullUpdateToAllClients();
2978 break; 2972 break;
2979 } 2973 }
2980 } 2974 }
2981
2982 ClearUpdateSchedule();
2983 } 2975 }
2984 2976
2985 /// <summary> 2977 /// <summary>