Code refactoring: PollingManager should not know anything about
XPixelBuffer. This commit partially reverts the changes from r2567.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2575 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/unix/x0vncserver/PollingManager.cxx b/unix/x0vncserver/PollingManager.cxx
index 27f1028..9951883 100644
--- a/unix/x0vncserver/PollingManager.cxx
+++ b/unix/x0vncserver/PollingManager.cxx
@@ -43,24 +43,24 @@
 //
 // Constructor.
 //
-// Note that dpy and buffer should remain valid during the object
+// Note that dpy and image should remain valid during the object
 // lifetime, while factory is used only in the constructor itself.
 //
 
-PollingManager::PollingManager(Display *dpy, XPixelBuffer *buffer,
+PollingManager::PollingManager(Display *dpy, const Image *image,
                                ImageFactory *factory,
                                int offsetLeft, int offsetTop)
   : m_dpy(dpy),
-    m_image(buffer->getImage()),
-    m_bytesPerPixel(buffer->getPF().bpp / 8),
+    m_image(image),
+    m_bytesPerPixel(image->xim->bits_per_pixel / 8),
     m_offsetLeft(offsetLeft),
     m_offsetTop(offsetTop),
-    m_width(buffer->width()),
-    m_height(buffer->height()),
-    m_widthTiles((buffer->width() + 31) / 32),
-    m_heightTiles((buffer->height() + 31) / 32),
-    m_numTiles(((buffer->width() + 31) / 32) *
-               ((buffer->height() + 31) / 32)),
+    m_width(image->xim->width),
+    m_height(image->xim->height),
+    m_widthTiles((image->xim->width + 31) / 32),
+    m_heightTiles((image->xim->height + 31) / 32),
+    m_numTiles(((image->xim->width + 31) / 32) *
+               ((image->xim->height + 31) / 32)),
     m_pollingStep(0)
 {
   // Create additional images used in polling algorithm, warn if
diff --git a/unix/x0vncserver/PollingManager.h b/unix/x0vncserver/PollingManager.h
index 587e347..779e88b 100644
--- a/unix/x0vncserver/PollingManager.h
+++ b/unix/x0vncserver/PollingManager.h
@@ -27,7 +27,6 @@
 #include <rfb/VNCServer.h>
 
 #include <x0vncserver/Image.h>
-#include <x0vncserver/XPixelBuffer.h>
 
 #ifdef DEBUG
 #include <x0vncserver/TimeMillis.h>
@@ -39,7 +38,7 @@
 
 public:
 
-  PollingManager(Display *dpy, XPixelBuffer *buffer, ImageFactory *factory,
+  PollingManager(Display *dpy, const Image *image, ImageFactory *factory,
                  int offsetLeft = 0, int offsetTop = 0);
   virtual ~PollingManager();
 
diff --git a/unix/x0vncserver/XPixelBuffer.h b/unix/x0vncserver/XPixelBuffer.h
index 25a3d84..3632f80 100644
--- a/unix/x0vncserver/XPixelBuffer.h
+++ b/unix/x0vncserver/XPixelBuffer.h
@@ -39,11 +39,8 @@
                const Rect &rect, ColourMap* cm);
   virtual ~XPixelBuffer();
 
-  // We allow public access to the underlying Image object.
-  // The image is heavily used by the PollingManager.
-  // TODO: Allow read-only (const Image *) access only.
-  //       Or better do not allow public access at all.
-  virtual Image *getImage() const { return m_image; }
+  // Provide access to the underlying Image object.
+  virtual const Image *getImage() const { return m_image; }
 
   // Override PixelBuffer::getStride().
   virtual int getStride() const { return m_stride; }
diff --git a/unix/x0vncserver/x0vncserver.cxx b/unix/x0vncserver/x0vncserver.cxx
index 2d38761..b63e937 100644
--- a/unix/x0vncserver/x0vncserver.cxx
+++ b/unix/x0vncserver/x0vncserver.cxx
@@ -187,7 +187,7 @@
     server->setPixelBuffer(pb);
 
     // Create polling manager object for detection of pixel changes.
-    pollmgr = new PollingManager(dpy, pb, &factory,
+    pollmgr = new PollingManager(dpy, pb->getImage(), &factory,
                                  geometry->offsetLeft(),
                                  geometry->offsetTop());
     running = true;