From b7629d7a3ddef18674be34f465237490e9ddcd83 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Fri, 9 Nov 2007 02:31:40 +0000 Subject: * Added some code to prevent a spinlock. --- OpenSim/Region/ClientStack/ClientView.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 75c69c2..5aaffcd 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs @@ -246,7 +246,7 @@ namespace OpenSim.Region.ClientStack protected virtual void ClientLoop() { - QueItem lastPacket = null; + bool queuedLast = false; MainLog.Instance.Verbose("CLIENT", "Entered loop"); while (true) @@ -254,6 +254,8 @@ namespace OpenSim.Region.ClientStack QueItem nextPacket = PacketQueue.Dequeue(); if (nextPacket.Incoming) { + queuedLast = false; + //is a incoming packet if (nextPacket.Packet.Type != PacketType.AgentUpdate) { @@ -269,15 +271,17 @@ namespace OpenSim.Region.ClientStack { PacketQueue.Enqueue(nextPacket); - if (lastPacket == nextPacket) + if (queuedLast) { Thread.Sleep(100); // Wait a little while if this was the last packet we saw } - + queuedLast = true; lastPacket = nextPacket; } else { + queuedLast = false; + // TODO: May be a bit expensive doing this twice. throttleSentPeriod += nextPacket.Packet.ToBytes().Length; -- cgit v1.1