]> source.dussan.org Git - tigervnc.git/commitdiff
Get rid of getStride() 9/head
authorPierre Ossman <ossman@cendio.se>
Thu, 30 Jan 2014 16:57:27 +0000 (17:57 +0100)
committerPierre Ossman <ossman@cendio.se>
Mon, 7 Jul 2014 12:50:29 +0000 (14:50 +0200)
It was confusing and not properly used everywhere.
Callers should use the stride they get when they get
the buffer pointer.

14 files changed:
common/rfb/PixelBuffer.cxx
common/rfb/PixelBuffer.h
unix/x0vncserver/XPixelBuffer.cxx
unix/x0vncserver/XPixelBuffer.h
unix/xserver/hw/vnc/XserverDesktop.cc
unix/xserver/hw/vnc/XserverDesktop.h
vncviewer/FLTKPixelBuffer.cxx
vncviewer/OSXPixelBuffer.cxx
vncviewer/PlatformPixelBuffer.cxx
vncviewer/PlatformPixelBuffer.h
vncviewer/Win32PixelBuffer.cxx
vncviewer/X11PixelBuffer.cxx
vncviewer/X11PixelBuffer.h
win/rfb_win32/DIBSectionBuffer.h

index ace0934d070ea0d10411739f6b3a6c2d2f4d8dd3..ea19d183d93ca2b16d8231e6e3e6e46682dba6b4 100644 (file)
@@ -1,4 +1,5 @@
 /* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
+ * Copyright 2014 Pierre Ossman for Cendio AB
  * 
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -61,8 +62,8 @@ PixelBuffer::getImage(void* imageBuf, const Rect& r, int outStride) {
 
 
 FullFramePixelBuffer::FullFramePixelBuffer(const PixelFormat& pf, int w, int h,
-                                           rdr::U8* data_)
-  : PixelBuffer(pf, w, h), data(data_)
+                                           rdr::U8* data_, int stride_)
+  : PixelBuffer(pf, w, h), data(data_), stride(stride_)
 {
 }
 
@@ -71,12 +72,10 @@ FullFramePixelBuffer::FullFramePixelBuffer() : data(0) {}
 FullFramePixelBuffer::~FullFramePixelBuffer() {}
 
 
-int FullFramePixelBuffer::getStride() const { return width(); }
-
-rdr::U8* FullFramePixelBuffer::getBufferRW(const Rect& r, int* stride)
+rdr::U8* FullFramePixelBuffer::getBufferRW(const Rect& r, int* stride_)
 {
-  *stride = getStride();
-  return &data[(r.tl.x + (r.tl.y * *stride)) * format.bpp/8];
+  *stride_ = stride;
+  return &data[(r.tl.x + (r.tl.y * stride)) * format.bpp/8];
 }
 
 
@@ -255,7 +254,7 @@ ManagedPixelBuffer::ManagedPixelBuffer()
 };
 
 ManagedPixelBuffer::ManagedPixelBuffer(const PixelFormat& pf, int w, int h)
-  : FullFramePixelBuffer(pf, w, h, 0), datasize(0)
+  : FullFramePixelBuffer(pf, w, h, NULL, w), datasize(0)
 {
   checkDataSize();
 };
@@ -271,7 +270,7 @@ ManagedPixelBuffer::setPF(const PixelFormat &pf) {
 };
 void
 ManagedPixelBuffer::setSize(int w, int h) {
-  width_ = w; height_ = h; checkDataSize();
+  width_ = w; height_ = h; stride = w; checkDataSize();
 };
 
 
index 94230247cf941af5090cd8f6be7dcbd64939f782..59d71c796065db41133350b7709ca6985f6ba9d0 100644 (file)
@@ -1,4 +1,5 @@
 /* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
+ * Copyright 2014 Pierre Ossman for Cendio AB
  * 
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -93,14 +94,10 @@ namespace rfb {
   class FullFramePixelBuffer : public PixelBuffer {
   public:
     FullFramePixelBuffer(const PixelFormat& pf, int width, int height,
-                         rdr::U8* data_);
+                         rdr::U8* data, int stride);
     virtual ~FullFramePixelBuffer();
 
   public:
-    // - Get the number of pixels per row in the actual pixel buffer data area
-    //   This may in some cases NOT be the same as width().
-    virtual int getStride() const;
-
     // Get a pointer to specified pixel data
     virtual const rdr::U8* getBuffer(const Rect& r, int* stride) {
       return getBufferRW(r, stride);
@@ -134,6 +131,7 @@ namespace rfb {
     FullFramePixelBuffer();
 
     rdr::U8* data;
+    int stride;
   };
 
   // -=- Managed pixel buffer class
index f88eda49f6784cc0eebb5ec87d85a7a96f54c6ea..f4641825e7fb96e1dab7f47fdd7e7efd14790123 100644 (file)
@@ -35,8 +35,7 @@ XPixelBuffer::XPixelBuffer(Display *dpy, ImageFactory &factory,
     m_dpy(dpy),
     m_image(factory.newImage(dpy, rect.width(), rect.height())),
     m_offsetLeft(rect.tl.x),
-    m_offsetTop(rect.tl.y),
-    m_stride(0)
+    m_offsetTop(rect.tl.y)
 {
   // Fill in the PixelFormat structure of the parent class.
   format = PixelFormat(m_image->xim->bits_per_pixel,
@@ -57,7 +56,7 @@ XPixelBuffer::XPixelBuffer(Display *dpy, ImageFactory &factory,
 
   // Calculate the distance in pixels between two subsequent scan
   // lines of the framebuffer. This may differ from image width.
-  m_stride = m_image->xim->bytes_per_line * 8 / m_image->xim->bits_per_pixel;
+  stride = m_image->xim->bytes_per_line * 8 / m_image->xim->bits_per_pixel;
 
   // Get initial screen image from the X display.
   m_image->get(DefaultRootWindow(m_dpy), m_offsetLeft, m_offsetTop);
index ab4f88e56b502d1c80c0b81a505c2f9272c71500..da0316159497e9b15a636483954d1c0d0ef78be9 100644 (file)
@@ -46,9 +46,6 @@ public:
   // Detect changed pixels, notify the server.
   inline void poll(VNCServer *server) { m_poller->poll(server); }
 
-  // Override PixelBuffer::getStride().
-  virtual int getStride() const { return m_stride; }
-
   // Override PixelBuffer::grabRegion().
   virtual void grabRegion(const rfb::Region& region);
 
@@ -60,9 +57,6 @@ protected:
   int m_offsetLeft;
   int m_offsetTop;
 
-  // The number of pixels in a row, with padding included.
-  int m_stride;
-
   // Copy pixels from the screen to the pixel buffer,
   // for the specified rectangular area of the buffer.
   inline void grabRect(const Rect &r) {
index e53dccdeffc863c5145c62cadada807d618c9751..f93cf6580e5e822c1a9ed818adb2ef0344f129a6 100644 (file)
@@ -177,7 +177,7 @@ void XserverDesktop::unblockUpdates()
   server->unblockUpdates();
 }
 
-void XserverDesktop::setFramebuffer(int w, int h, void* fbptr, int stride)
+void XserverDesktop::setFramebuffer(int w, int h, void* fbptr, int stride_)
 {
   ScreenSet layout;
 
@@ -191,12 +191,12 @@ void XserverDesktop::setFramebuffer(int w, int h, void* fbptr, int stride)
 
   if (!fbptr) {
     fbptr = new rdr::U8[w * h * (format.bpp/8)];
-    stride = w;
+    stride_ = w;
     directFbptr = false;
   }
 
   data = (rdr::U8*)fbptr;
-  stride_ = stride;
+  stride = stride_;
 
   layout = computeScreenLayout();
 
@@ -1044,11 +1044,6 @@ void XserverDesktop::grabRegion(const rfb::Region& region)
   grabbing = false;
 }
 
-int XserverDesktop::getStride() const
-{
-  return stride_;
-}
-
 void XserverDesktop::keyEvent(rdr::U32 keysym, bool down)
 {
        if (down)
index fa03d8ab19ec217606b10527341694082ea8af15..046f31f11bdc27e7eb9527d92edf76c100fb5fed 100644 (file)
@@ -109,7 +109,6 @@ public:
 
   // rfb::PixelBuffer callbacks
   virtual void grabRegion(const rfb::Region& r);
-  virtual int getStride() const;
 
   // rdr::Substitutor callback
   virtual char* substitute(const char* varName);
@@ -131,7 +130,6 @@ private:
   rfb::HTTPServer* httpServer;
   network::TcpListener* listener;
   network::TcpListener* httpListener;
-  int stride_;
   bool deferredUpdateTimerSet;
   bool grabbing;
   bool ignoreHooks_;
index 91ff787ec0c0579b4e81341230844473aca15ad0..588e2f8367394d5ebf1d948bb076df185d756bc4 100644 (file)
@@ -25,7 +25,7 @@
 FLTKPixelBuffer::FLTKPixelBuffer(int width, int height) :
   PlatformPixelBuffer(rfb::PixelFormat(32, 24, false, true,
                                        255, 255, 255, 0, 8, 16),
-                      width, height, NULL)
+                      width, height, NULL, width)
 {
   data = new rdr::U8[width * height * format.bpp/8];
   if (data == NULL)
@@ -43,7 +43,7 @@ void FLTKPixelBuffer::draw(int src_x, int src_y, int x, int y, int w, int h)
   const uchar *buf_start;
 
   pixel_bytes = format.bpp/8;
-  stride_bytes = pixel_bytes * getStride();
+  stride_bytes = pixel_bytes * stride;
   buf_start = data +
               pixel_bytes * src_x +
               stride_bytes * src_y;
index fc216a1200dada31bf99f78bfbc3900ebb48c18f..d196497ff5ee9273368d0ee0a9723e2c5b62035a 100644 (file)
@@ -39,7 +39,7 @@ static rfb::LogWriter vlog("OSXPixelBuffer");
 OSXPixelBuffer::OSXPixelBuffer(int width, int height) :
   PlatformPixelBuffer(rfb::PixelFormat(32, 24, false, true,
                                        255, 255, 255, 16, 8, 0),
-                      width, height, NULL),
+                      width, height, NULL, width),
   bitmap(NULL)
 {
   CGColorSpaceRef lut;
index 8a24690cd2ad3c633f9f127b690c7948f202296b..ced04467d7436570b407f6cae8f9ce5989a10e66 100644 (file)
@@ -20,7 +20,7 @@
 
 PlatformPixelBuffer::PlatformPixelBuffer(const rfb::PixelFormat& pf,
                                          int width, int height,
-                                         rdr::U8* data) :
-  FullFramePixelBuffer(pf, width, height, data)
+                                         rdr::U8* data, int stride) :
+  FullFramePixelBuffer(pf, width, height, data, stride)
 {
 }
index 28d085aa8df6efb6732ca29a68b81fae8a558146..03842ac8410af6b9cd8abaea54632bf2b174adf3 100644 (file)
 class PlatformPixelBuffer: public rfb::FullFramePixelBuffer {
 public:
   PlatformPixelBuffer(const rfb::PixelFormat& pf, int width, int height,
-                      rdr::U8* data);
+                      rdr::U8* data, int stride);
 
   virtual void draw(int src_x, int src_y, int x, int y, int w, int h) = 0;
 
-protected:
-  int stride;
 };
 
 #endif
index 429f63f1b9b5e6a030215395897d5a518257dbda..9fb041451713596af79eb97d406a1ecac2e96990 100644 (file)
@@ -40,7 +40,7 @@ static rfb::LogWriter vlog("Win32PixelBuffer");
 Win32PixelBuffer::Win32PixelBuffer(int width, int height) :
   PlatformPixelBuffer(rfb::PixelFormat(32, 24, false, true,
                                        255, 255, 255, 16, 8, 0),
-                      width, height, NULL),
+                      width, height, NULL, width),
   bitmap(NULL)
 {
   BITMAPINFOHEADER bih;
index 3675eb57a6074ce3075e77ced16507cacccd4ad5..c709984bb79c384114c0379840e932440b2fe8dc 100644 (file)
@@ -94,7 +94,7 @@ static PixelFormat display_pf()
 }
 
 X11PixelBuffer::X11PixelBuffer(int width, int height) :
-  PlatformPixelBuffer(display_pf(), width, height, NULL),
+  PlatformPixelBuffer(display_pf(), width, height, NULL, 0),
   shminfo(NULL), xim(NULL)
 {
   // Might not be open at this point
@@ -110,6 +110,7 @@ X11PixelBuffer::X11PixelBuffer(int width, int height) :
   }
 
   data = (rdr::U8*)xim->data;
+  stride = xim->bytes_per_line / (getPF().bpp/8);
 }
 
 
@@ -139,11 +140,6 @@ void X11PixelBuffer::draw(int src_x, int src_y, int x, int y, int w, int h)
 }
 
 
-int X11PixelBuffer::getStride() const
-{
-  return xim->bytes_per_line / (getPF().bpp/8);
-}
-
 static bool caughtError;
 
 static int XShmAttachErrorHandler(Display *dpy, XErrorEvent *error)
index 6d54165f81f21ea9d00464dd6f0b0294ceced193..c2ffdc283fec11dddb633bd48fbb1e9de8096527 100644 (file)
@@ -33,8 +33,6 @@ public:
 
   virtual void draw(int src_x, int src_y, int x, int y, int w, int h);
 
-  int getStride() const;
-
 protected:
   int setupShm();
 
index 1a9ef134f7b855604210d2c6924c741e9a112953..cf9e7bc12231eaafc7592706f60e10f02488ab44 100644 (file)
@@ -47,14 +47,11 @@ namespace rfb {
       virtual void setPF(const PixelFormat &pf);
       virtual void setSize(int w, int h);
 
-      virtual int getStride() const {return stride;}
-
       // *** virtual void copyRect(const Rect &dest, const Point &move_by_delta);
     public:
       HBITMAP bitmap;
     protected:
       void recreateBuffer();
-      int stride;
       HWND window;
       HDC device;
     };