]> source.dussan.org Git - tigervnc.git/commitdiff
Maintaining additional one-pixel-width image for using in upcoming polling improvements.
authorConstantin Kaplinsky <const@tightvnc.com>
Fri, 28 Dec 2007 17:59:10 +0000 (17:59 +0000)
committerConstantin Kaplinsky <const@tightvnc.com>
Fri, 28 Dec 2007 17:59:10 +0000 (17:59 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2385 3789f03b-4d11-0410-bbf8-ca57d06f2519

unix/x0vncserver/PollingManager.cxx
unix/x0vncserver/PollingManager.h

index ad6ac42496eb23606926a1f5ce498c2402b0acc5..4d7221add91d963b7ac4aba069a19523bc05673f 100644 (file)
@@ -76,9 +76,14 @@ PollingManager::PollingManager(Display *dpy, Image *image,
   // underlying class names are different from the class name of the
   // primary image.
   m_rowImage = factory->newImage(m_dpy, m_width, 1);
-  if (strcmp(m_image->className(), m_rowImage->className()) != 0) {
-    vlog.error("Image types do not match (%s)",
-               m_rowImage->className());
+  m_columnImage = factory->newImage(m_dpy, 1, m_height);
+  const char *primaryImgClass = m_image->className();
+  const char *rowImgClass = m_rowImage->className();
+  const char *columnImgClass = m_columnImage->className();
+  if (strcmp(rowImgClass, primaryImgClass) != 0 ||
+      strcmp(columnImgClass, primaryImgClass) != 0) {
+    vlog.error("Image types do not match (%s, %s, %s)",
+               primaryImgClass, rowImgClass, columnImgClass);
   }
 
   int numTiles = m_widthTiles * m_heightTiles;
@@ -94,6 +99,7 @@ PollingManager::~PollingManager()
   delete[] m_rateMatrix;
 
   delete m_rowImage;
+  delete m_columnImage;
 }
 
 //
index fd2c2e0585020578a92b8412a3a6a0f71f25895d..70c3d4c72aabe1fb98ed911b79bb05970665e15d 100644 (file)
@@ -93,8 +93,8 @@ private:
   }
 
   inline void getColumn(int x, int y, int h) {
-    m_rowImage->get(DefaultRootWindow(m_dpy),
-                    m_offsetLeft + x, m_offsetTop + y, 1, h);
+    m_columnImage->get(DefaultRootWindow(m_dpy),
+                       m_offsetLeft + x, m_offsetTop + y, 1, h);
   }
 
   int checkRow(int x, int y, int w, bool *pChangeFlags);
@@ -110,7 +110,8 @@ private:
   void findMaxLocalRect(Rect *r, int *mx_h, int *mx_v);
 
   // Additional images used in polling algorithms.
-  Image *m_rowImage;            // One row of the framebuffer
+  Image *m_rowImage;            // one row of the framebuffer
+  Image *m_columnImage;         // one column of the framebuffer
 
   char *m_rateMatrix;
   char *m_videoFlags;