From 4ffc284a36b9111fd1fe3be23f8f7cb0a58a025c Mon Sep 17 00:00:00 2001
From: dr scofield (aka dirk husemann)
Date: Tue, 4 Aug 2009 17:24:32 +0200
Subject: trying to fix rare timer related exception.

---
 .../Region/ClientStack/LindenUDP/LLClientView.cs   | 24 +++++++++++-----------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index e532939..9142b36 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -592,11 +592,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
             Thread.Sleep(2000);
 
             // Shut down timers
-            m_clientPingTimer.Stop();
-            m_avatarTerseUpdateTimer.Stop();
-            m_primTerseUpdateTimer.Stop();
-            m_primFullUpdateTimer.Stop();
-            m_textureRequestTimer.Stop();
+            if (m_clientPingTimer.Enabled) m_clientPingTimer.Stop();
+            if (m_avatarTerseUpdateTimer.Enabled) m_avatarTerseUpdateTimer.Stop();
+            if (m_primTerseUpdateTimer.Enabled) m_primTerseUpdateTimer.Stop();
+            if (m_primFullUpdateTimer.Enabled) m_primFullUpdateTimer.Stop();
+            if (m_textureRequestTimer.Enabled) m_textureRequestTimer.Stop();
 
             // This is just to give the client a reasonable chance of
             // flushing out all it's packets.  There should probably
@@ -676,11 +676,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
         public void Stop()
         {
             // Shut down timers
-            m_clientPingTimer.Stop();
-            m_avatarTerseUpdateTimer.Stop();
-            m_primTerseUpdateTimer.Stop();
-            m_primFullUpdateTimer.Stop();
-            m_textureRequestTimer.Stop();
+            if (m_clientPingTimer.Enabled) m_clientPingTimer.Stop();
+            if (m_avatarTerseUpdateTimer.Enabled) m_avatarTerseUpdateTimer.Stop();
+            if (m_primTerseUpdateTimer.Enabled) m_primTerseUpdateTimer.Stop();
+            if (m_primFullUpdateTimer.Enabled) m_primFullUpdateTimer.Stop();
+            if (m_textureRequestTimer.Enabled) m_textureRequestTimer.Stop();
         }
 
         public void Restart()
@@ -3111,7 +3111,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
         {
             lock (m_primFullUpdates)
             {
-                if (m_primFullUpdates.Count == 0)
+                if (m_primFullUpdates.Count == 0 && m_primFullUpdateTimer.Enabled)
                 {
                     m_primFullUpdateTimer.Stop();
 
@@ -3159,7 +3159,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
                 outPacket.Header.Zerocoded = true;
                 OutPacket(outPacket, ThrottleOutPacketType.Task | ThrottleOutPacketType.LowPriority);
 
-                if (m_primFullUpdates.Count == 0)
+                if (m_primFullUpdates.Count == 0 && m_primFullUpdateTimer.Enabled)
                     m_primFullUpdateTimer.Stop();
             }
         }
-- 
cgit v1.1