Eliminated code duplication in polling implementations, added a few
comments, removed a FIXME comment proven to be unfounded.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@478 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/x0vncserver/PollingManager.cxx b/x0vncserver/PollingManager.cxx
index 00580e0..3e5aa3e 100644
--- a/x0vncserver/PollingManager.cxx
+++ b/x0vncserver/PollingManager.cxx
@@ -168,25 +168,33 @@
 
 void PollingManager::poll()
 {
-  bool someChanges = false;
+  // First step: full-screen polling.
+
+  bool changes1 = false;
 
   switch((int)pollingType) {
   case 0:
-    someChanges = poll_Dumb();
+    changes1 = poll_Dumb();
     break;
   case 1:
-    someChanges = poll_Traditional();
+    changes1 = poll_Traditional();
     break;
   case 2:
-    someChanges = poll_SkipCycles();
+    changes1 = poll_SkipCycles();
     break;
 //case 3:
   default:
-    someChanges = poll_DetectVideo();
+    changes1 = poll_DetectVideo();
     break;
   }
 
-  if (someChanges)
+  // Second step: optional thorough polling of the area around the pointer.
+
+  bool changes2 = pollPointer && m_pointerPosKnown && pollPointerArea();
+
+  // Update if needed.
+
+  if (changes1 || changes2)
     m_server->tryUpdate();
 }
 
@@ -258,11 +266,6 @@
   if (grandStep)
     adjustVideoArea();
 
-  // FIXME: Exclude area near the pointer from the comparisons above.
-  // FIXME: Code duplication.
-  if (pollPointer && m_pointerPosKnown && pollPointerArea())
-    nTilesChanged++;
-
   return (nTilesChanged != 0);
 }
 
@@ -327,11 +330,6 @@
     }
   }
 
-  // FIXME: Exclude area near the pointer from the comparisons above.
-  // FIXME: Code duplication.
-  if (pollPointer && m_pointerPosKnown && pollPointerArea())
-    nTilesChanged++;
-
   return (nTilesChanged != 0);
 }
 
@@ -374,11 +372,6 @@
     }
   }
 
-  // FIXME: Exclude area near the pointer from the comparisons above.
-  // FIXME: Code duplication.
-  if (pollPointer && m_pointerPosKnown && pollPointerArea())
-    nTilesChanged++;
-
   return (nTilesChanged != 0);
 }
 
@@ -402,6 +395,8 @@
 //
 // Compute coordinates of the rectangle around the pointer.
 //
+// ASSUMES: (m_pointerPosKnown != false)
+//
 
 void PollingManager::computePointerArea(Rect *r)
 {