ScaledDIBSectionBuffer class code improvements. Added check
for changing class parameters such as width, height, pf.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@641 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/win/rfb_win32/ScaledDIBSectionBuffer.cxx b/win/rfb_win32/ScaledDIBSectionBuffer.cxx
index 700e90b..df3a6c9 100644
--- a/win/rfb_win32/ScaledDIBSectionBuffer.cxx
+++ b/win/rfb_win32/ScaledDIBSectionBuffer.cxx
@@ -67,6 +67,8 @@
 }
 
 void ScaledDIBSectionBuffer::setPF(const PixelFormat &pf_) {
+  if (memcmp(&getPF(), &pf_, sizeof(pf_)) == 0) return;
+
   if (scaling) {
     ScaledPixelBuffer::setPF(pf_);
     src_buffer->setPF(pf_);
@@ -76,6 +78,8 @@
 }
 
 void ScaledDIBSectionBuffer::setSize(int src_width_, int src_height_) {
+  if (src_width == src_width_ && src_height == src_height_) return;
+
   src_width = src_width_;
   src_height = src_height_;
   if (scaling) {
@@ -89,8 +93,10 @@
 void ScaledDIBSectionBuffer::recreateScaledBuffer() {
   width_  = scaled_width;
   height_ = scaled_height;
-  DIBSectionBuffer::recreateBuffer();
-  scaled_data = data;
+  if (width_ && height_ && (format.depth != 0)) {
+    DIBSectionBuffer::recreateBuffer();
+    scaled_data = data;
+  }
 }
 
 void ScaledDIBSectionBuffer::fillRect(const Rect &dest, Pixel pix) {