]> source.dussan.org Git - tigervnc.git/commitdiff
Code refactoring -- moving a code chunk from poll_New() to a separate sendChanges...
authorConstantin Kaplinsky <const@tightvnc.com>
Sun, 7 Oct 2007 13:03:55 +0000 (13:03 +0000)
committerConstantin Kaplinsky <const@tightvnc.com>
Sun, 7 Oct 2007 13:03:55 +0000 (13:03 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2344 3789f03b-4d11-0410-bbf8-ca57d06f2519

unix/x0vncserver/PollingManager.cxx
unix/x0vncserver/PollingManager.h

index d10dde7413533c90c5e010236e027649f38f3ddb..4ceb03d4fafbab5b2e8453d9f029b88a4fade123 100644 (file)
@@ -260,32 +260,8 @@ bool PollingManager::poll_New()
   }
 
   // Inform the server about the changes.
-  if (nTilesChanged) {
-    bool *pmxChanged = mxChanged;
-    Rect rect;
-    for (int y = 0; y < m_heightTiles; y++) {
-      for (int x = 0; x < m_widthTiles; x++) {
-        if (*pmxChanged++) {
-          // Count successive tiles marked as changed.
-          int count = 1;
-          while (x + count < m_widthTiles && *pmxChanged++) {
-            count++;
-          }
-          // Compute the coordinates and the size of this band.
-          rect.setXYWH(x * 32, y * 32, count * 32, 32);
-          if (rect.br.x > m_width)
-            rect.br.x = m_width;
-          if (rect.br.y > m_height)
-            rect.br.y = m_height;
-          // Add to the changed region maintained by the server.
-          getScreenRect(rect);
-          m_server->add_changed(rect);
-          // Skip processed tiles.
-          x += count;
-        }
-      }
-    }
-  }
+  if (nTilesChanged)
+    sendChanges(mxChanged);
 
   // Cleanup.
   delete[] mxChanged;
@@ -319,6 +295,33 @@ int PollingManager::checkRow(int x, int y, int w, bool *pmxChanged)
   return nTilesChanged;
 }
 
+void PollingManager::sendChanges(bool *pmxChanged)
+{
+  Rect rect;
+  for (int y = 0; y < m_heightTiles; y++) {
+    for (int x = 0; x < m_widthTiles; x++) {
+      if (*pmxChanged++) {
+        // Count successive tiles marked as changed.
+        int count = 1;
+        while (x + count < m_widthTiles && *pmxChanged++) {
+          count++;
+        }
+        // Compute the coordinates and the size of this band.
+        rect.setXYWH(x * 32, y * 32, count * 32, 32);
+        if (rect.br.x > m_width)
+          rect.br.x = m_width;
+        if (rect.br.y > m_height)
+          rect.br.y = m_height;
+        // Add to the changed region maintained by the server.
+        getScreenRect(rect);
+        m_server->add_changed(rect);
+        // Skip processed tiles.
+        x += count;
+      }
+    }
+  }
+}
+
 bool PollingManager::poll_DetectVideo()
 {
   if (!m_server)
index 0d9e90e5d551be16a4308b7c5b0d6bba9a4a7b83..3b922d8a8c663b28cddbf39223caab4d71fa7943 100644 (file)
@@ -136,6 +136,7 @@ private:
   }
 
   int checkRow(int x, int y, int w, bool *pmxChanged);
+  void sendChanges(bool *pmxChanged);
 
   void adjustVideoArea();