]> source.dussan.org Git - tigervnc.git/commitdiff
Clean up initialization of DIBSectionBuffer
authorPierre Ossman <ossman@cendio.se>
Fri, 3 Jan 2020 12:10:20 +0000 (13:10 +0100)
committerPierre Ossman <ossman@cendio.se>
Fri, 3 Jan 2020 12:10:20 +0000 (13:10 +0100)
We had an unintentional conflict with PixelBuffer::setSize() here.
But we can simplify this further as this initialization is only used
by the subclass DeviceFrameBuffer, and only once.

win/rfb_win32/DIBSectionBuffer.cxx
win/rfb_win32/DIBSectionBuffer.h
win/rfb_win32/DeviceFrameBuffer.cxx
win/rfb_win32/DeviceFrameBuffer.h

index e00cf233c0bda52f94064ceddcafad7946798c0e..57bef2dcbf06c28a50f3d9e4c597c7efdcc24594 100644 (file)
@@ -44,26 +44,20 @@ DIBSectionBuffer::~DIBSectionBuffer() {
 }
 
 
-void DIBSectionBuffer::setPF(const PixelFormat& pf) {
-  if (memcmp(&getPF(), &pf, sizeof(pf)) == 0) {
-    vlog.debug("pixel format unchanged by setPF()");
-    return;
-  }
-  if (!pf.trueColour)
-    throw rfb::Exception("palette format not supported");
-  format = pf;
-  setSize(width(), height());
-}
-
 inline void initMaxAndShift(DWORD mask, int* max, int* shift) {
   for ((*shift) = 0; (mask & 1) == 0; (*shift)++) mask >>= 1;
   (*max) = (rdr::U16)mask;
 }
 
-void DIBSectionBuffer::setSize(int w, int h) {
+void DIBSectionBuffer::initBuffer(const PixelFormat& pf, int w, int h) {
   HBITMAP new_bitmap = 0;
   rdr::U8* new_data = 0;
 
+  if (!pf.trueColour)
+    throw rfb::Exception("palette format not supported");
+
+  format = pf;
+
   if (w && h && (format.depth != 0)) {
     BitmapInfo bi;
     memset(&bi, 0, sizeof(bi));
index cf9e7bc12231eaafc7592706f60e10f02488ab44..2f099f39bd6bbea65d359fb1cc892209a27ee73c 100644 (file)
@@ -44,14 +44,10 @@ namespace rfb {
       DIBSectionBuffer(HDC device);
       virtual ~DIBSectionBuffer();
 
-      virtual void setPF(const PixelFormat &pf);
-      virtual void setSize(int w, int h);
-
-      // *** virtual void copyRect(const Rect &dest, const Point &move_by_delta);
     public:
       HBITMAP bitmap;
     protected:
-      void recreateBuffer();
+      void initBuffer(const PixelFormat& pf, int w, int h);
       HWND window;
       HDC device;
     };
index 3138cce2d6bb733f77d27a4cc9a0f01855e6191c..14c0ae34ab67d24a00a103dd833eca8b9b4a7886 100644 (file)
@@ -74,25 +74,13 @@ DeviceFrameBuffer::DeviceFrameBuffer(HDC deviceContext, const Rect& wRect)
   if (w % 2) w--;
 
   // Configure the underlying DIB to match the device
-  DIBSectionBuffer::setPF(DeviceContext::getPF(device));
-  DIBSectionBuffer::setSize(w, h);
+  initBuffer(DeviceContext::getPF(device), w, h);
 }
 
 DeviceFrameBuffer::~DeviceFrameBuffer() {
 }
 
 
-void
-DeviceFrameBuffer::setPF(const PixelFormat &pf) {
-  throw Exception("setPF not supported");
-}
-
-void
-DeviceFrameBuffer::setSize(int w, int h) {
-  throw Exception("setSize not supported");
-}
-
-
 #ifndef CAPTUREBLT
 #define CAPTUREBLT 0x40000000
 #endif
index 6fccf9fa706cb115f7b50cfbb367c87cd442e902..c8715724af839bac8107d56ce1a16c9ead776c94 100644 (file)
@@ -71,11 +71,6 @@ namespace rfb {
       virtual void grabRect(const Rect &rect);
       virtual void grabRegion(const Region &region);
 
-      // - DIBSectionBuffer overrides
-      
-      virtual void setPF(const PixelFormat& pf);
-      virtual void setSize(int w, int h);
-      
       // - DeviceFrameBuffer specific methods
 
       void setCursor(HCURSOR c, VNCServer* server);