Code refactoring: maintaining the Image object representing the framebuffer
in XPixelBuffer instead of XDesktop.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2572 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/unix/x0vncserver/x0vncserver.cxx b/unix/x0vncserver/x0vncserver.cxx
index 9331cf5..f2ff430 100644
--- a/unix/x0vncserver/x0vncserver.cxx
+++ b/unix/x0vncserver/x0vncserver.cxx
@@ -138,7 +138,7 @@
{
public:
XDesktop(Display* dpy_, Geometry *geometry_)
- : dpy(dpy_), geometry(geometry_), pb(0), server(0), image(0), pollmgr(0),
+ : dpy(dpy_), geometry(geometry_), pb(0), server(0), pollmgr(0),
oldButtonMask(0), haveXtest(false), maxButtons(0), running(false)
{
#ifdef HAVE_XTEST
@@ -175,15 +175,17 @@
vlog.info("Enabling %d button%s of X pointer device",
maxButtons, (maxButtons != 1) ? "s" : "");
- // Create an image for maintaining framebuffer data.
+ // Create an ImageFactory instance for producing Image objects.
ImageFactory factory((bool)useShm, (bool)useOverlay);
- image = factory.newImage(dpy, geometry->width(), geometry->height());
- vlog.info("Allocated %s", image->classDesc());
// Provide pixel buffer to the server object.
- pb = new XPixelBuffer(dpy, image,
+ // FIXME: Pass coordinates in a structure?
+ pb = new XPixelBuffer(dpy, factory,
geometry->offsetLeft(), geometry->offsetTop(),
+ geometry->width(), geometry->height(),
this);
+ vlog.info("Allocated %s", pb->getImage()->classDesc());
+
server = vs;
server->setPixelBuffer(pb);
@@ -199,11 +201,9 @@
delete pb;
delete pollmgr;
- delete image;
pb = 0;
pollmgr = 0;
- image = 0;
}
inline bool isRunning() {
@@ -273,7 +273,6 @@
Geometry* geometry;
XPixelBuffer* pb;
VNCServer* server;
- Image* image;
PollingManager* pollmgr;
int oldButtonMask;
bool haveXtest;