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);