Small the ScaledDIBSectionBuffer class code improvements.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@647 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/win/rfb_win32/ScaledDIBSectionBuffer.cxx b/win/rfb_win32/ScaledDIBSectionBuffer.cxx
index e009187..155de3d 100644
--- a/win/rfb_win32/ScaledDIBSectionBuffer.cxx
+++ b/win/rfb_win32/ScaledDIBSectionBuffer.cxx
@@ -45,6 +45,7 @@
   if (scale_ratio_ != 1) scaling = true;
   else scaling = false;
   ScaledPixelBuffer::setScaleRatio(scale_ratio_);
+  calculateScaledBufferSize();
   recreateBuffers();
 }
 
@@ -73,8 +74,6 @@
 }
 
 void ScaledDIBSectionBuffer::recreateScaledBuffer() {
-  width_  = scaled_width;
-  height_ = scaled_height;
   if (width_ && height_ && (format.depth != 0)) {
     DIBSectionBuffer::recreateBuffer();
     scaled_data = data;
@@ -82,8 +81,6 @@
 }
 
 void ScaledDIBSectionBuffer::recreateBuffers() {
-  width_ = scaled_width;
-  height_ = scaled_height;
   if (scaled_width && scaled_height && format.depth != 0 && scale_ratio != 0) {
     if (scaling) {
       if (src_buffer) {
@@ -111,6 +108,12 @@
   }
 }
 
+void ScaledDIBSectionBuffer::calculateScaledBufferSize() {
+  ScaledPixelBuffer::calculateScaledBufferSize();
+  width_ = scaled_width;
+  height_ = scaled_height;
+}
+
 void ScaledDIBSectionBuffer::fillRect(const Rect &dest, Pixel pix) {
   if (scaling) {
     src_buffer->fillRect(dest, pix);
diff --git a/win/rfb_win32/ScaledDIBSectionBuffer.h b/win/rfb_win32/ScaledDIBSectionBuffer.h
index c2b8ed7..69c3848 100644
--- a/win/rfb_win32/ScaledDIBSectionBuffer.h
+++ b/win/rfb_win32/ScaledDIBSectionBuffer.h
@@ -51,6 +51,8 @@
       virtual void setScale(int scale) { setScaleRatio(double(scale)/100.0); };
       virtual void setScaleRatio(double scale_ratio);
 
+      virtual void calculateScaledBufferSize();
+
       Rect getRect() const { return ScaledPixelBuffer::getRect(); }
       Rect getRect(const Point& pos) const { return ScaledPixelBuffer::getRect(pos); }