diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index ffdb6398a9..b491110fd8 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs @@ -323,7 +323,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP protected int m_elapsedMSSinceLastStatReport = 0; /// Environment.TickCount of the last time the outgoing packet handler executed - protected double m_tickLastOutgoingPacketHandler; + protected int m_tickLastOutgoingPacketHandler; /// Keeps track of the number of elapsed milliseconds since the last time the outgoing packet handler looped protected int m_elapsedMSOutgoingPacketHandler; @@ -2073,13 +2073,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_sendPing = false; // Update elapsed time - double thisTick = Util.GetTimeStampMS(); - int deltaMS = (int)(thisTick - m_tickLastOutgoingPacketHandler); + int thisTick = Environment.TickCount & Int32.MaxValue; + if (m_tickLastOutgoingPacketHandler > thisTick) + m_elapsedMSOutgoingPacketHandler += ((Int32.MaxValue - m_tickLastOutgoingPacketHandler) + thisTick); + else + m_elapsedMSOutgoingPacketHandler += (thisTick - m_tickLastOutgoingPacketHandler); + m_tickLastOutgoingPacketHandler = thisTick; // update some 1ms resolution chained timers - - m_elapsedMSOutgoingPacketHandler += deltaMS; // Check for pending outgoing resends every 100ms if (m_elapsedMSOutgoingPacketHandler >= 100)