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
diff --git a/unix/x0vncserver/PollingManager.cxx b/unix/x0vncserver/PollingManager.cxx
index 9a9f28a..27f1028 100644
--- a/unix/x0vncserver/PollingManager.cxx
+++ b/unix/x0vncserver/PollingManager.cxx
@@ -51,7 +51,6 @@
                                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),
@@ -91,15 +90,6 @@
 }
 
 //
-// 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 @@
 // 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 @@
 #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 @@
     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 @@
   return nTilesChanged;
 }
 
-int PollingManager::sendChanges()
+int PollingManager::sendChanges(VNCServer *server)
 {
   const bool *pChangeFlags = m_changeFlags;
   int nTilesChanged = 0;
@@ -287,7 +277,7 @@
         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;
       }
diff --git a/unix/x0vncserver/PollingManager.h b/unix/x0vncserver/PollingManager.h
index 97a158f..587e347 100644
--- a/unix/x0vncserver/PollingManager.h
+++ b/unix/x0vncserver/PollingManager.h
@@ -43,8 +43,6 @@
                  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 @@
   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 @@
 
   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();
diff --git a/unix/x0vncserver/x0vncserver.cxx b/unix/x0vncserver/x0vncserver.cxx
index 8489290..edaf1a8 100644
--- a/unix/x0vncserver/x0vncserver.cxx
+++ b/unix/x0vncserver/x0vncserver.cxx
@@ -202,8 +202,6 @@
     pollmgr = new PollingManager(dpy, pb, &factory,
                                  geometry->offsetLeft(),
                                  geometry->offsetTop());
-    pollmgr->setVNCServer(vs);
-
     running = true;
   }
 
@@ -225,7 +223,7 @@
 
   inline void poll() {
     if (pollmgr)
-      pollmgr->poll();
+      pollmgr->poll(server);
   }
 
   virtual void pointerEvent(const Point& pos, int buttonMask) {