Pārlūkot izejas kodu

Code refactoring: passing VNCServer pointer to PollingManager methods

instead of maintaining it as a member variable.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2569 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v0.0.90
Constantin Kaplinsky pirms 16 gadiem
vecāks
revīzija
54cfef3a6b

+ 8
- 18
unix/x0vncserver/PollingManager.cxx Parādīt failu

@@ -51,7 +51,6 @@ PollingManager::PollingManager(Display *dpy, XPixelBuffer *buffer,
ImageFactory *factory,
int offsetLeft, int offsetTop)
: m_dpy(dpy),
m_server(0),
m_image(buffer->getImage()),
m_bytesPerPixel(buffer->getPF().bpp / 8),
m_offsetLeft(offsetLeft),
@@ -90,15 +89,6 @@ PollingManager::~PollingManager()
delete m_columnImage;
}

//
// Register VNCServer object.
//

void PollingManager::setVNCServer(VNCServer *s)
{
m_server = s;
}

//
// DEBUG: Measuring time spent in the poll() function,
// as well as time intervals between poll() calls.
@@ -127,15 +117,15 @@ void PollingManager::debugAfterPoll()
// Search for changed rectangles on the screen.
//

void PollingManager::poll()
void PollingManager::poll(VNCServer *server)
{
#ifdef DEBUG
debugBeforePoll();
#endif

// Perform polling and try update clients if changes were detected.
if (pollScreen())
m_server->tryUpdate();
if (pollScreen(server))
server->tryUpdate();

#ifdef DEBUG
debugAfterPoll();
@@ -148,9 +138,9 @@ void PollingManager::poll()
#define DBG_REPORT_CHANGES(title)
#endif

bool PollingManager::pollScreen()
bool PollingManager::pollScreen(VNCServer *server)
{
if (!m_server)
if (!server)
return false;

// Clear the m_changeFlags[] array, indicating that no changes have
@@ -175,7 +165,7 @@ bool PollingManager::pollScreen()
checkNeighbors();
DBG_REPORT_CHANGES("After checking neighbors");
// Inform the server about the changes.
nTilesChanged = sendChanges();
nTilesChanged = sendChanges(server);
}

#ifdef DEBUG_PRINT_NUM_CHANGED_TILES
@@ -265,7 +255,7 @@ int PollingManager::checkColumn(int x, int y, int h, bool *pChangeFlags)
return nTilesChanged;
}

int PollingManager::sendChanges()
int PollingManager::sendChanges(VNCServer *server)
{
const bool *pChangeFlags = m_changeFlags;
int nTilesChanged = 0;
@@ -287,7 +277,7 @@ int PollingManager::sendChanges()
if (rect.br.y > m_height)
rect.br.y = m_height;
// Add to the changed region maintained by the server.
m_server->add_changed(rect);
server->add_changed(rect);
// Skip processed tiles.
x += count;
}

+ 3
- 6
unix/x0vncserver/PollingManager.h Parādīt failu

@@ -43,8 +43,6 @@ public:
int offsetLeft = 0, int offsetTop = 0);
virtual ~PollingManager();

void setVNCServer(VNCServer *s);

// Currently, these functions do nothing. In past versions, we used
// to poll area around the pointer if its position has been changed
// recently. But that rather decreased overal polling performance,
@@ -54,15 +52,14 @@ public:
void setPointerPos(const Point &pos) {}
void unsetPointerPos() {}

void poll();
void poll(VNCServer *server);

protected:

// Screen polling. Returns true if some changes were detected.
bool pollScreen();
bool pollScreen(VNCServer *server);

Display *m_dpy;
VNCServer *m_server;

const Image *m_image;
const int m_bytesPerPixel;
@@ -98,7 +95,7 @@ private:

int checkRow(int x, int y, int w);
int checkColumn(int x, int y, int h, bool *pChangeFlags);
int sendChanges();
int sendChanges(VNCServer *server);

// Check neighboring tiles and update m_changeFlags[].
void checkNeighbors();

+ 1
- 3
unix/x0vncserver/x0vncserver.cxx Parādīt failu

@@ -202,8 +202,6 @@ public:
pollmgr = new PollingManager(dpy, pb, &factory,
geometry->offsetLeft(),
geometry->offsetTop());
pollmgr->setVNCServer(vs);

running = true;
}

@@ -225,7 +223,7 @@ public:

inline void poll() {
if (pollmgr)
pollmgr->poll();
pollmgr->poll(server);
}

virtual void pointerEvent(const Point& pos, int buttonMask) {

Notiek ielāde…
Atcelt
Saglabāt