Send desktop layout changes separately

Make sure we send any modifications to the desktop layout in a message that
does not modify the framebuffer data. This is required to make sure we have
a valid state on the client as it drops the framebuffer when it recieves a
framebuffer dimension change.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3787 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/common/rfb/SMsgWriter.cxx b/common/rfb/SMsgWriter.cxx
index f3079ee..1695161 100644
--- a/common/rfb/SMsgWriter.cxx
+++ b/common/rfb/SMsgWriter.cxx
@@ -114,6 +114,11 @@
   return encoders[encoding]->getNumRects(r);
 }
 
+bool SMsgWriter::needFakeUpdate()
+{
+  return false;
+}
+
 // FIXME: This functions is not used because it incorrectly computes
 //        the number of rectangles if the Tight encoder is used.
 /*
@@ -126,6 +131,17 @@
 }
 */
 
+bool SMsgWriter::needNoDataUpdate()
+{
+  return false;
+}
+
+void SMsgWriter::writeNoDataUpdate()
+{
+  // This class has no pseudo-rectangles so there is nothing to do here
+  vlog.error("writeNoDataUpdate() called");
+}
+
 void SMsgWriter::writeRects(const UpdateInfo& ui, ImageGetter* ig,
                             Region* updatedRegion)
 {
@@ -148,12 +164,6 @@
   }
 }
 
-
-bool SMsgWriter::needFakeUpdate()
-{
-  return false;
-}
-
 bool SMsgWriter::writeRect(const Rect& r, ImageGetter* ig, Rect* actual)
 {
   return writeRect(r, cp->currentEncoding(), ig, actual);