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;