]> source.dussan.org Git - tigervnc.git/commitdiff
Small rfb_win32::ScaledDIBSectionBuffer class code
authorgeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Wed, 24 May 2006 10:05:24 +0000 (10:05 +0000)
committergeorge82 <george82@3789f03b-4d11-0410-bbf8-ca57d06f2519>
Wed, 24 May 2006 10:05:24 +0000 (10:05 +0000)
improvements.
Create rfb_win32::ScaledDIBSectionBuffer::src_buffer
only if the vncviewer work in the scaling mode.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@584 3789f03b-4d11-0410-bbf8-ca57d06f2519

rfb_win32/ScaledDIBSectionBuffer.cxx

index e6c15b8eb2376bc3d3e809f3205211740f64cc32..bd6b4d37d71ed0bac98344044c04adfe92cedca9 100644 (file)
@@ -40,23 +40,28 @@ ScaledDIBSectionBuffer::~ScaledDIBSectionBuffer() {
 void ScaledDIBSectionBuffer::setScale(int scale_) {
   if (scale_ == getScale()) return;
 
-  if (src_buffer) {
-    delete src_buffer;
-    src_buffer = 0;
-  }
   if (scale_ != 100) {
     scaling = true;
-    src_buffer = new ManagedPixelBuffer(format, src_width, src_height);
-    src_data = &(src_buffer->data);
+    if (!src_buffer) {
+      src_buffer = new ManagedPixelBuffer(format, src_width, src_height);
+      src_data = &(src_buffer->data);
+    }
   } else {
     scaling = false;
+    if (src_buffer) delete src_buffer;
+    src_buffer = 0;
+    src_data = 0;
   }
   ScaledPixelBuffer::setScale(scale_);
+  recreateScaledBuffer();
 }
 
-void ScaledDIBSectionBuffer::setPF(const PixelFormat &pf) {
-  if (scaling) src_buffer->setPF(pf);
-  DIBSectionBuffer::setPF(pf);
+void ScaledDIBSectionBuffer::setPF(const PixelFormat &pf_) {
+  if (scaling) {
+    ScaledPixelBuffer::setPF(pf_);
+    src_buffer->setPF(pf_);
+  }
+  DIBSectionBuffer::setPF(pf_);
   scaled_data = data;
 }