diff options
author | Dan Lake | 2011-12-13 21:37:17 -0800 |
---|---|---|
committer | Dan Lake | 2011-12-13 21:37:17 -0800 |
commit | 39736e52d87d9e04092262c1a41e3c434f087e36 (patch) | |
tree | 619dec7e6bf4653fe7b7c06aac444aa664ea86ef /OpenSim/Region/Framework | |
parent | In AvatarFactoryModule.SetApperance(), perform ValidateBakedTextureCache() in... (diff) | |
download | opensim-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.cs | 14 |
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> |