]> source.dussan.org Git - tigervnc.git/commitdiff
Make sure we use the correct pixel format for cursors when in non-native mode.
authorPierre Ossman <ossman@cendio.se>
Fri, 15 Jul 2011 08:26:51 +0000 (08:26 +0000)
committerPierre Ossman <ossman@cendio.se>
Fri, 15 Jul 2011 08:26:51 +0000 (08:26 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4592 3789f03b-4d11-0410-bbf8-ca57d06f2519

vncviewer/Viewport.cxx

index dcadd0ef1a5ae36b6fffaaca345ee995880a70b9..cf57539795d20a3b15fb371d838f4a99779e6914 100644 (file)
@@ -223,7 +223,12 @@ void Viewport::setCursor(int width, int height, const Point& hotspot,
       U8 *i, *o, *m;
       int m_width;
 
-      const PixelFormat &pf = frameBuffer->getPF();
+      const PixelFormat *pf;
+      
+      if (pixelTrans)
+        pf = &pixelTrans->getInPF();
+      else
+        pf = &frameBuffer->getPF();
 
       i = (U8*)data;
       o = buffer;
@@ -231,7 +236,7 @@ void Viewport::setCursor(int width, int height, const Point& hotspot,
       m_width = (width+7)/8;
       for (int y = 0;y < height;y++) {
         for (int x = 0;x < width;x++) {
-          pf.rgbFromBuffer(o, i, 1, &colourMap);
+          pf->rgbFromBuffer(o, i, 1, &colourMap);
 
           if (m[(m_width*y)+(x/8)] & 0x80>>(x%8))
             o[3] = 255;
@@ -239,7 +244,7 @@ void Viewport::setCursor(int width, int height, const Point& hotspot,
             o[3] = 0;
 
           o += 4;
-          i += pf.bpp/8;
+          i += pf->bpp/8;
         }
       }