Browse Source

Code refactoring - PollingManager's constructor is given an XPixelBuffer*

instead of an Image*.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2567 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v0.0.90
Constantin Kaplinsky 16 years ago
parent
commit
2c01983400

+ 10
- 12
unix/x0vncserver/PollingManager.cxx View File

@@ -43,27 +43,25 @@ const int PollingManager::m_pollingOrder[32] = {
//
// Constructor.
//
// Note that dpy and image should remain valid during the object
// Note that dpy and buffer should remain valid during the object
// lifetime, while factory is used only in the constructor itself.
//
// FIXME: Pass XPixelBuffer* instead of Image*.
//

PollingManager::PollingManager(Display *dpy, Image *image,
PollingManager::PollingManager(Display *dpy, XPixelBuffer *buffer,
ImageFactory *factory,
int offsetLeft, int offsetTop)
: m_dpy(dpy),
m_server(0),
m_image(image),
m_bytesPerPixel(image->xim->bits_per_pixel / 8),
m_image(buffer->getImage()),
m_bytesPerPixel(buffer->getPF().bpp / 8),
m_offsetLeft(offsetLeft),
m_offsetTop(offsetTop),
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_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_pollingStep(0)
{
// Get initial screen image.

+ 2
- 1
unix/x0vncserver/PollingManager.h View File

@@ -27,6 +27,7 @@
#include <rfb/VNCServer.h>

#include <x0vncserver/Image.h>
#include <x0vncserver/XPixelBuffer.h>

#ifdef DEBUG
#include <x0vncserver/TimeMillis.h>
@@ -38,7 +39,7 @@ class PollingManager {

public:

PollingManager(Display *dpy, Image *image, ImageFactory *factory,
PollingManager(Display *dpy, XPixelBuffer *buffer, ImageFactory *factory,
int offsetLeft = 0, int offsetTop = 0);
virtual ~PollingManager();


+ 1
- 1
unix/x0vncserver/XPixelBuffer.cxx View File

@@ -1,4 +1,4 @@
/* Copyright (C) 2007 Constantin Kaplinsky. All Rights Reserved.
/* Copyright (C) 2007-2008 Constantin Kaplinsky. All Rights Reserved.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by

+ 7
- 1
unix/x0vncserver/XPixelBuffer.h View File

@@ -1,4 +1,4 @@
/* Copyright (C) 2007 Constantin Kaplinsky. All Rights Reserved.
/* Copyright (C) 2007-2008 Constantin Kaplinsky. All Rights Reserved.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -40,6 +40,12 @@ public:
const PixelFormat& pf, 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; }

virtual int getStride() const { return m_stride; }

// Override PixelBuffer's function.

+ 8
- 9
unix/x0vncserver/x0vncserver.cxx View File

@@ -1,5 +1,5 @@
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
* Copyright (C) 2004-2006 Constantin Kaplinsky. All Rights Reserved.
* Copyright (C) 2004-2008 Constantin Kaplinsky. All Rights Reserved.
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -180,13 +180,6 @@ public:
image = factory.newImage(dpy, geometry->width(), geometry->height());
vlog.info("Allocated %s", image->classDesc());

// Create polling manager object. It will track screen changes and
// keep pixels of the `image' object up to date.
pollmgr = new PollingManager(dpy, image, &factory,
geometry->offsetLeft(),
geometry->offsetTop());
pollmgr->setVNCServer(vs);

pf.bpp = image->xim->bits_per_pixel;
pf.depth = image->xim->depth;
pf.bigEndian = (image->xim->byte_order == MSBFirst);
@@ -205,6 +198,12 @@ public:
server = vs;
server->setPixelBuffer(pb);

// Create polling manager object for detection of pixel changes.
pollmgr = new PollingManager(dpy, pb, &factory,
geometry->offsetLeft(),
geometry->offsetTop());
pollmgr->setVNCServer(vs);

running = true;
}

@@ -286,7 +285,7 @@ protected:
Display* dpy;
Geometry* geometry;
PixelFormat pf;
PixelBuffer* pb;
XPixelBuffer* pb;
VNCServer* server;
Image* image;
PollingManager* pollmgr;

Loading…
Cancel
Save