Applied vnc-use-fb.patch from FC3, slightly modified:
Use fb unconditionally. This makes the code simpler, and the old mfb/cfb is buggy and deprecated.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@184 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/xc/programs/Xserver/vnc/Xvnc/xvnc.cc b/xc/programs/Xserver/vnc/Xvnc/xvnc.cc
index 9e8b264..2d2dc78 100644
--- a/xc/programs/Xserver/vnc/Xvnc/xvnc.cc
+++ b/xc/programs/Xserver/vnc/Xvnc/xvnc.cc
@@ -67,8 +67,7 @@
 #include "X11/Xos.h"
 #include "scrnintstr.h"
 #include "servermd.h"
-#define PSZ 8
-#include "cfb.h"
+#include "fb.h"
 #include "mi.h"
 #include "mibstore.h"
 #include "colormapst.h"
@@ -92,16 +91,6 @@
 #undef public
 #undef xor
 #undef and
-  extern Bool cfb16ScreenInit(ScreenPtr, pointer, int, int, int, int, int);
-  extern Bool cfb32ScreenInit(ScreenPtr, pointer, int, int, int, int, int);
-  extern Bool cfb16CreateGC(GCPtr);
-  extern Bool cfb32CreateGC(GCPtr);
-  extern void cfb16GetSpans(DrawablePtr, int, DDXPointPtr, int*, int, char*);
-  extern void cfb32GetSpans(DrawablePtr, int, DDXPointPtr, int*, int, char*);
-  extern void cfb16GetImage(DrawablePtr, int, int, int, int, unsigned int,
-                            unsigned long, char*);
-  extern void cfb32GetImage(DrawablePtr, int, int, int, int, unsigned int,
-                            unsigned long, char*);
 }
 
 #define XVNCVERSION "4.0"
@@ -491,66 +480,6 @@
 }
 #endif
 
-
-static Bool vfbMultiDepthCreateGC(GCPtr   pGC)
-{
-  switch (vfbBitsPerPixel(pGC->depth))
-  {
-  case 1:  return mfbCreateGC (pGC);
-  case 8:  return cfbCreateGC (pGC);
-  case 16: return cfb16CreateGC (pGC);
-  case 32: return cfb32CreateGC (pGC);
-  default: return FALSE;
-  }
-}
-
-static void vfbMultiDepthGetSpans(
-                                  DrawablePtr		pDrawable,	/* drawable from which to get bits */
-                                  int			wMax,		/* largest value of all *pwidths */
-                                  register DDXPointPtr ppt,		/* points to start copying from */
-                                  int			*pwidth,	/* list of number of bits to copy */
-                                  int			nspans,		/* number of scanlines to copy */
-                                  char		*pdstStart)	/* where to put the bits */
-{
-  switch (pDrawable->bitsPerPixel) {
-  case 1:
-    mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
-    break;
-  case 8:
-    cfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
-    break;
-  case 16:
-    cfb16GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
-    break;
-  case 32:
-    cfb32GetSpans(pDrawable, wMax, ppt, pwidth, nspans, pdstStart);
-    break;
-  }
-  return;
-}
-
-static void
-vfbMultiDepthGetImage(DrawablePtr pDrawable, int sx, int sy, int w, int h,
-                      unsigned int format, unsigned long planeMask,
-                      char *pdstLine)
-{
-  switch (pDrawable->bitsPerPixel)
-  {
-  case 1:
-    mfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
-    break;
-  case 8:
-    cfbGetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
-    break;
-  case 16:
-    cfb16GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
-    break;
-  case 32:
-    cfb32GetImage(pDrawable, sx, sy, w, h, format, planeMask, pdstLine);
-    break;
-  }
-}
-
 static ColormapPtr InstalledMaps[MAXSCREENS];
 
 static int vfbListInstalledColormaps(ScreenPtr pScreen, Colormap *pmaps)
@@ -820,33 +749,9 @@
   defaultColorVisualClass
     = (pvfb->bitsPerPixel > 8) ? TrueColor : PseudoColor;
 
-  switch (pvfb->bitsPerPixel)
-  {
-  case 1:
-    ret = mfbScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
-                        dpi, dpi, pvfb->paddedWidth);
-    break;
-  case 8:
-    ret = cfbScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
-                        dpi, dpi, pvfb->paddedWidth);
-    break;
-  case 16:
-    ret = cfb16ScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
-                          dpi, dpi, pvfb->paddedWidth);
-    break;
-  case 32:
-    ret = cfb32ScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
-                          dpi, dpi, pvfb->paddedWidth);
-    break;
-  default:
-    return FALSE;
-  }
-
-  if (!ret) return FALSE;
-
-  pScreen->CreateGC = vfbMultiDepthCreateGC;
-  pScreen->GetImage = vfbMultiDepthGetImage;
-  pScreen->GetSpans = vfbMultiDepthGetSpans;
+  if (!fbScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
+                    dpi, dpi, pvfb->paddedWidth, pvfb->bitsPerPixel))
+      return FALSE;
 
   pScreen->InstallColormap = vfbInstallColormap;
   pScreen->UninstallColormap = vfbUninstallColormap;
@@ -892,14 +797,7 @@
     }
   }
 
-  if (pvfb->bitsPerPixel == 1)
-  {
-    ret = mfbCreateDefColormap(pScreen);
-  }
-  else
-  {
-    ret = cfbCreateDefColormap(pScreen);
-  }
+  ret = fbCreateDefColormap(pScreen);
 
   miSetZeroLineBias(pScreen, pvfb->lineBias);