Polling screen area around current pointer position with higher
priority. Also, there is a number of code improvements, and some new
"FIXME" comments for potential future improvements.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@477 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/x0vncserver/PollingManager.h b/x0vncserver/PollingManager.h
index 8f7f820..a35fafe 100644
--- a/x0vncserver/PollingManager.h
+++ b/x0vncserver/PollingManager.h
@@ -38,9 +38,17 @@
   virtual ~PollingManager();
 
   void setVNCServer(VNCServer *s);
+
+  void setPointerPos(const Point &pos);
+  void unsetPointerPos();
+
   void pollDebug();
   void poll();
 
+  // Configurable parameters.
+  static BoolParameter pollPointer;
+  static IntParameter pollingType;
+
 protected:
 
   //
@@ -52,6 +60,10 @@
   bool poll_Traditional();
   bool poll_Dumb();
 
+  // Separate polling for the area around current pointer position.
+  void computePointerArea(Rect *r);
+  bool pollPointerArea();
+
   Display *m_dpy;
   VNCServer *m_server;
 
@@ -61,12 +73,18 @@
   int m_widthTiles;
   int m_heightTiles;
 
+  // Tracking pointer position for polling improvements.
+  bool m_pointerPosKnown;
+  Point m_pointerPos;
+
 private:
 
   void adjustVideoArea();
 
-  Image *m_rowImage;
-  Image *m_tileImage;
+  // Additional images used in polling algorithms.
+  Image *m_rowImage;            // One row of the framebuffer
+  Image *m_tileImage;           // One tile (32x32 or less)
+  Image *m_areaImage;           // Area around the pointer (up to 128x128)
 
   char *m_statusMatrix;