Grabbing the screen moved from PollingManager to XPixelBuffer.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2568 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/unix/x0vncserver/XPixelBuffer.cxx b/unix/x0vncserver/XPixelBuffer.cxx
index 78ac558..2692c18 100644
--- a/unix/x0vncserver/XPixelBuffer.cxx
+++ b/unix/x0vncserver/XPixelBuffer.cxx
@@ -20,6 +20,8 @@
 // XPixelBuffer.cxx
 //
 
+#include <vector>
+#include <rfb/Region.h>
 #include <X11/Xlib.h>
 #include <x0vncserver/XPixelBuffer.h>
 
@@ -36,6 +38,8 @@
     m_offsetTop(offsetTop),
     m_stride(image->xim->bytes_per_line * 8 / image->xim->bits_per_pixel)
 {
+  // Get initial screen image.
+  m_image->get(DefaultRootWindow(m_dpy), m_offsetLeft, m_offsetTop);
 }
 
 XPixelBuffer::~XPixelBuffer()
@@ -45,6 +49,11 @@
 void
 XPixelBuffer::grabRegion(const rfb::Region& region)
 {
-  // m_image->get(DefaultRootWindow(m_dpy), m_offsetLeft, m_offsetTop);
+  std::vector<Rect> rects;
+  std::vector<Rect>::const_iterator i;
+  region.get_rects(&rects);
+  for (i = rects.begin(); i != rects.end(); i++) {
+    grabRect(*i);
+  }
 }