Reorder clearing of upate schedule on SOP to before sending updates. Fix potential race condition.
parent
b242ceda1e
commit
39736e52d8
|
@ -259,8 +259,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
private bool m_passTouches;
|
private bool m_passTouches;
|
||||||
|
|
||||||
private UpdateRequired m_updateFlag;
|
|
||||||
|
|
||||||
private PhysicsActor m_physActor;
|
private PhysicsActor m_physActor;
|
||||||
protected Vector3 m_acceleration;
|
protected Vector3 m_acceleration;
|
||||||
protected Vector3 m_angularVelocity;
|
protected Vector3 m_angularVelocity;
|
||||||
|
@ -1004,11 +1002,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public UpdateRequired UpdateFlag
|
public UpdateRequired UpdateFlag { get; set; }
|
||||||
{
|
|
||||||
get { return m_updateFlag; }
|
|
||||||
set { m_updateFlag = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used for media on a prim.
|
/// Used for media on a prim.
|
||||||
|
@ -2949,6 +2943,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
case UpdateRequired.TERSE:
|
case UpdateRequired.TERSE:
|
||||||
{
|
{
|
||||||
|
ClearUpdateSchedule();
|
||||||
// Throw away duplicate or insignificant updates
|
// Throw away duplicate or insignificant updates
|
||||||
if (!RotationOffset.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) ||
|
if (!RotationOffset.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) ||
|
||||||
!Acceleration.Equals(m_lastAcceleration) ||
|
!Acceleration.Equals(m_lastAcceleration) ||
|
||||||
|
@ -2958,9 +2953,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
!OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) ||
|
!OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) ||
|
||||||
Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE)
|
Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE)
|
||||||
{
|
{
|
||||||
|
|
||||||
SendTerseUpdateToAllClients();
|
SendTerseUpdateToAllClients();
|
||||||
ClearUpdateSchedule();
|
|
||||||
|
|
||||||
// Update the "last" values
|
// Update the "last" values
|
||||||
m_lastPosition = OffsetPosition;
|
m_lastPosition = OffsetPosition;
|
||||||
|
@ -2974,12 +2967,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
case UpdateRequired.FULL:
|
case UpdateRequired.FULL:
|
||||||
{
|
{
|
||||||
|
ClearUpdateSchedule();
|
||||||
SendFullUpdateToAllClients();
|
SendFullUpdateToAllClients();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ClearUpdateSchedule();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue