Optimise the common pixel format conversion RGB24 to RGB32.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3730 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/common/rfb/PixelFormat.inl b/common/rfb/PixelFormat.inl
index d5edfa5..90d8e6d 100644
--- a/common/rfb/PixelFormat.inl
+++ b/common/rfb/PixelFormat.inl
@@ -50,6 +50,31 @@
 }
 
 
+inline void PixelFormat::bufferFromPixel(rdr::U8* buffer, Pixel p) const
+{
+  if (bigEndian) {
+    switch (bpp) {
+    case 32:
+      *(buffer++) = (p >> 24) & 0xff;
+      *(buffer++) = (p >> 16) & 0xff;
+    case 16:
+      *(buffer++) = (p >>  8) & 0xff;
+    case 8:
+      *(buffer++) = (p >>  0) & 0xff;
+    }
+  } else {
+    buffer[0] = (p >>  0) & 0xff;
+    if (bpp >= 16) {
+      buffer[1] = (p >>  8) & 0xff;
+      if (bpp == 32) {
+        buffer[2] = (p >> 16) & 0xff;
+        buffer[3] = (p >> 24) & 0xff;
+      }
+    }
+  }
+}
+
+
 inline void PixelFormat::rgbFromPixel(Pixel p, ColourMap* cm, rdr::U16 *r, rdr::U16 *g, rdr::U16 *b) const
 {
   if (trueColour) {