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;