Magellan Linux

Contents of /trunk/xorg-old/patches-6.8.2-r10/0485_all_6.8.0-afb-cfb-dlloader-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 167 - (show annotations) (download)
Tue May 8 20:58:51 2007 UTC (17 years ago) by niro
File size: 28674 byte(s)
-import

1 https://bugs.freedesktop.org/show_bug.cgi?id=1114
2 http://bugs.gentoo.org/show_bug.cgi?id=61063
3
4 Ferris McCormick:
5 This is the xorg-x11 patch which allows sunffb+cfb to work with dlloader.
6 According to ajax, only the sparc graphics drivers still use cfb, so the
7 change is needed only for sparc+xorg+dlloader, and dlloader is really only
8 needed for building xorg-hardened. (Without dlloader, xorg+hardened must
9 actually force 'softening'.)
10
11 diff -urN xc.orig/programs/Xserver/afb/afbbres.c xc/programs/Xserver/afb/afbbres.c
12 --- xc.orig/programs/Xserver/afb/afbbres.c 2004-04-23 11:59:39.000000000 -0700
13 +++ xc/programs/Xserver/afb/afbbres.c 2004-12-12 20:34:24.837025688 -0800
14 @@ -79,8 +79,8 @@
15 register int yinc; /* increment to next scanline, in bytes */
16 register PixelType *addrl; /* bitmask long pointer */
17 register PixelType bit; /* current bit being set/cleared/etc. */
18 - PixelType leftbit = mask[0]; /* leftmost bit to process in new word */
19 - PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */
20 + PixelType leftbit = mfbGetmask(0); /* leftmost bit to process in new word */
21 + PixelType rightbit = mfbGetmask(PPW-1); /* rightmost bit to process in new word */
22
23 register int e3 = e2-e1;
24 PixelType tmp;
25 @@ -103,7 +103,7 @@
26 addrlbase += sizeDst; /* @@@ NEXT PLANE @@@ */
27 len = saveLen;
28 e = saveE;
29 - bit = mask[x1 & PIM];
30 + bit = mfbGetmask(x1 & PIM);
31
32 switch (rrops[d]) {
33 case RROP_BLACK:
34 diff -urN xc.orig/programs/Xserver/afb/afbbresd.c xc/programs/Xserver/afb/afbbresd.c
35 --- xc.orig/programs/Xserver/afb/afbbresd.c 2004-04-23 11:59:39.000000000 -0700
36 +++ xc/programs/Xserver/afb/afbbresd.c 2004-12-12 20:34:24.838025536 -0800
37 @@ -93,8 +93,8 @@
38 register PixelType *addrl;
39 register int e3 = e2-e1;
40 register unsigned long bit;
41 - PixelType leftbit = mask[0]; /* leftmost bit to process in new word */
42 - PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */
43 + PixelType leftbit = mfbGetmask(0); /* leftmost bit to process in new word */
44 + PixelType rightbit = mfbGetmask(PPW-1); /* rightmost bit to process in new word */
45 int dashIndex;
46 int dashOffset;
47 int dashRemaining;
48 @@ -125,7 +125,7 @@
49
50 e = saveE;
51 len = saveLen;
52 - bit = mask[x1 & PIM];
53 + bit = mfbGetmask(x1 & PIM);
54
55 rop = fgrop;
56 if (!isDoubleDash)
57 diff -urN xc.orig/programs/Xserver/afb/afbclip.c xc/programs/Xserver/afb/afbclip.c
58 --- xc.orig/programs/Xserver/afb/afbclip.c 2004-04-23 11:59:39.000000000 -0700
59 +++ xc/programs/Xserver/afb/afbclip.c 2004-12-12 20:34:24.838025536 -0800
60 @@ -102,7 +102,7 @@
61 register BoxPtr prectO, prectN;
62 BoxPtr FirstRect, rects, prectLineStart;
63 Bool fInBox, fSame;
64 - register PixelType mask0 = mask[0];
65 + register PixelType mask0 = mfbGetmask(0);
66 PixelType *pwLine;
67 int nWidth;
68
69 diff -urN xc.orig/programs/Xserver/afb/afbhrzvert.c xc/programs/Xserver/afb/afbhrzvert.c
70 --- xc.orig/programs/Xserver/afb/afbhrzvert.c 2004-04-23 11:59:39.000000000 -0700
71 +++ xc/programs/Xserver/afb/afbhrzvert.c 2004-12-12 20:34:24.839025384 -0800
72 @@ -186,17 +186,17 @@
73
74 switch (rrops[d]) {
75 case RROP_BLACK:
76 - bitmask = rmask[x1 & PIM];
77 + bitmask = mfbGetrmask(x1 & PIM);
78 Duff(len, *addrl &= bitmask; afbScanlineInc(addrl, nlwidth) );
79 break;
80
81 case RROP_WHITE:
82 - bitmask = mask[x1 & PIM];
83 + bitmask = mfbGetmask(x1 & PIM);
84 Duff(len, *addrl |= bitmask; afbScanlineInc(addrl, nlwidth) );
85 break;
86
87 case RROP_INVERT:
88 - bitmask = mask[x1 & PIM];
89 + bitmask = mfbGetmask(x1 & PIM);
90 Duff(len, *addrl ^= bitmask; afbScanlineInc(addrl, nlwidth) );
91 break;
92
93 diff -urN xc.orig/programs/Xserver/afb/afbline.c xc/programs/Xserver/afb/afbline.c
94 --- xc.orig/programs/Xserver/afb/afbline.c 2004-04-23 11:59:39.000000000 -0700
95 +++ xc/programs/Xserver/afb/afbline.c 2004-12-12 20:34:24.855022952 -0800
96 @@ -401,13 +401,13 @@
97
98 switch(rrops[d]) {
99 case RROP_BLACK:
100 - *addrl &= rmask[x2 & PIM];
101 + *addrl &= mfbGetrmask(x2 & PIM);
102 break;
103 case RROP_WHITE:
104 - *addrl |= mask[x2 & PIM];
105 + *addrl |= mfbGetmask(x2 & PIM);
106 break;
107 case RROP_INVERT:
108 - *addrl ^= mask[x2 & PIM];
109 + *addrl ^= mfbGetmask(x2 & PIM);
110 break;
111 case RROP_NOP:
112 break;
113 @@ -679,14 +679,14 @@
114
115 switch (rop) {
116 case RROP_BLACK:
117 - *addrl &= rmask[x2 & PIM];
118 + *addrl &= mfbGetrmask(x2 & PIM);
119 break;
120 case RROP_WHITE:
121 - *addrl |= mask[x2 & PIM];
122 + *addrl |= mfbGetmask(x2 & PIM);
123 break;
124
125 case RROP_INVERT:
126 - *addrl ^= mask[x2 & PIM];
127 + *addrl ^= mfbGetmask(x2 & PIM);
128 break;
129
130 case RROP_NOP:
131 diff -urN xc.orig/programs/Xserver/afb/afbmodule.c xc/programs/Xserver/afb/afbmodule.c
132 --- xc.orig/programs/Xserver/afb/afbmodule.c 2004-04-23 11:59:39.000000000 -0700
133 +++ xc/programs/Xserver/afb/afbmodule.c 2004-12-12 20:34:24.859022344 -0800
134 @@ -30,6 +30,8 @@
135 #include "xf86Module.h"
136 #include "afb.h"
137
138 +static MODULESETUPPROTO(afbSetup);
139 +
140 static XF86ModuleVersionInfo VersRec =
141 {
142 "afb",
143 @@ -44,6 +46,14 @@
144 {0,0,0,0} /* signature, to be patched into the file by a tool */
145 };
146
147 -XF86ModuleData afbModuleData = { &VersRec, NULL, NULL };
148 +XF86ModuleData afbModuleData = { &VersRec, afbSetup, NULL };
149 +
150 +static pointer
151 +afbSetup(pointer module, pointer opts, int *errmaj, int *errmin)
152 +{
153 + /* This modules requires mfb, so load it */
154 + return LoadSubModule(module, "mfb", NULL, NULL, NULL, NULL,
155 + errmaj, errmin);
156 +}
157
158 #endif
159 diff -urN xc.orig/programs/Xserver/afb/afbpixmap.c xc/programs/Xserver/afb/afbpixmap.c
160 --- xc.orig/programs/Xserver/afb/afbpixmap.c 2004-04-23 11:59:39.000000000 -0700
161 +++ xc/programs/Xserver/afb/afbpixmap.c 2004-12-12 20:34:24.860022192 -0800
162 @@ -164,7 +164,7 @@
163 if (rep*width != PPW)
164 return;
165
166 - mask = endtab[width];
167 + mask = mfbGetendtab(width);
168
169 p = (PixelType *)(pPixmap->devPrivate.ptr);
170
171 @@ -206,7 +206,7 @@
172 while(pw < pwFinal) {
173 t = *pw;
174 *pw++ = SCRRIGHT(t, rw) |
175 - (SCRLEFT(t, (PPW-rw)) & endtab[rw]);
176 + (SCRLEFT(t, (PPW-rw)) & mfbGetendtab(rw));
177 }
178 } else {
179 /* We no longer do this. Validate doesn't try to rotate odd-size
180 diff -urN xc.orig/programs/Xserver/afb/afbpolypnt.c xc/programs/Xserver/afb/afbpolypnt.c
181 --- xc.orig/programs/Xserver/afb/afbpolypnt.c 2004-04-23 11:59:39.000000000 -0700
182 +++ xc/programs/Xserver/afb/afbpolypnt.c 2004-12-12 20:34:24.861022040 -0800
183 @@ -113,7 +113,7 @@
184 y = ppt->y + pDrawable->y;
185 if ((x >= pbox->x1) && (x < pbox->x2) &&
186 (y >= pbox->y1) && (y < pbox->y2))
187 - *afbScanline(addrl, x, y, nlwidth) &= rmask[x & PIM];
188 + *afbScanline(addrl, x, y, nlwidth) &= mfbGetrmask(x & PIM);
189 }
190 break;
191
192 @@ -123,7 +123,7 @@
193 y = ppt->y + pDrawable->y;
194 if ((x >= pbox->x1) && (x < pbox->x2) &&
195 (y >= pbox->y1) && (y < pbox->y2))
196 - *afbScanline(addrl, x, y, nlwidth) |= mask[x & PIM];
197 + *afbScanline(addrl, x, y, nlwidth) |= mfbGetmask(x & PIM);
198 }
199 break;
200
201 @@ -133,7 +133,7 @@
202 y = ppt->y + pDrawable->y;
203 if ((x >= pbox->x1) && (x < pbox->x2) &&
204 (y >= pbox->y1) && (y < pbox->y2))
205 - *afbScanline(addrl, x, y, nlwidth) ^= mask[x & PIM];
206 + *afbScanline(addrl, x, y, nlwidth) ^= mfbGetmask(x & PIM);
207 }
208 break;
209
210 diff -urN xc.orig/programs/Xserver/afb/afbpushpxl.c xc/programs/Xserver/afb/afbpushpxl.c
211 --- xc.orig/programs/Xserver/afb/afbpushpxl.c 2004-04-23 11:59:39.000000000 -0700
212 +++ xc/programs/Xserver/afb/afbpushpxl.c 2004-12-12 20:34:24.861022040 -0800
213 @@ -184,7 +184,7 @@
214 pwEnd = pwLineStart + dxDivPPW;
215 while(pw < pwEnd) {
216 w = *pw;
217 - mask = endtab[1];
218 + mask = mfbGetendtab(1);
219 for(ib = 0; ib < PPW; ib++) {
220 if(w & mask) {
221 if(!fInBox) {
222 @@ -214,7 +214,7 @@
223 if(ibEnd) {
224 /* Process final partial word on line */
225 w = *pw;
226 - mask = endtab[1];
227 + mask = mfbGetendtab(1);
228 for(ib = 0; ib < ibEnd; ib++) {
229 if(w & mask) {
230 if(!fInBox) {
231 diff -urN xc.orig/programs/Xserver/afb/afbtegblt.c xc/programs/Xserver/afb/afbtegblt.c
232 --- xc.orig/programs/Xserver/afb/afbtegblt.c 2004-04-23 11:59:39.000000000 -0700
233 +++ xc/programs/Xserver/afb/afbtegblt.c 2004-12-12 20:34:24.862021888 -0800
234 @@ -296,7 +296,7 @@
235 widthGlyphs = widthGlyph * PGSZB;
236
237 #ifdef USE_LEFTBITS
238 - glyphMask = endtab[widthGlyph];
239 + glyphMask = mfbGetendtab(widthGlyph);
240 glyphBytes = GLYPHWIDTHBYTESPADDED(*ppci);
241 #endif
242
243 diff -urN xc.orig/programs/Xserver/cfb/Imakefile.inc xc/programs/Xserver/cfb/Imakefile.inc
244 --- xc.orig/programs/Xserver/cfb/Imakefile.inc 2004-04-25 19:39:58.000000000 -0700
245 +++ xc/programs/Xserver/cfb/Imakefile.inc 2004-12-12 20:34:24.863021736 -0800
246 @@ -65,6 +65,7 @@
247 XFMODOBJ = cfbmodule.o
248 #endif
249
250 +XCOMM THIS IS STUPID
251 #if !(defined(IHaveModules) && defined(LinkDirectory))
252 CFBCMAP = cfbcmap.o
253 #endif
254 @@ -91,7 +92,7 @@
255 cfbtileoddC.o cfbtileoddG.o cfbtile32C.o cfbtile32G.o \
256 cfbfillsp.o cfbsetsp.o cfbscrinit.o cfballpriv.o \
257 cfbpntwin.o cfbmskbits.o cfbpixmap.o \
258 - $(CFBCMAP) cfbzerarcC.o cfbzerarcX.o cfbzerarcG.o \
259 + cfbcmap.o cfbzerarcC.o cfbzerarcX.o cfbzerarcG.o \
260 cfbfillarcC.o cfbfillarcG.o \
261 cfbigblt8.o cfbglblt8.o cfbtegblt.o cfbbstore.o \
262 cfbpolypnt.o \
263 diff -urN xc.orig/programs/Xserver/cfb/cfballpriv.c xc/programs/Xserver/cfb/cfballpriv.c
264 --- xc.orig/programs/Xserver/cfb/cfballpriv.c 2004-04-23 12:00:12.000000000 -0700
265 +++ xc/programs/Xserver/cfb/cfballpriv.c 2004-12-12 20:34:24.863021736 -0800
266 @@ -42,7 +42,7 @@
267 #include "cfbmskbits.h"
268 #include "mibstore.h"
269
270 -#if PSZ==8
271 +#if 1 || PSZ==8
272 int cfbWindowPrivateIndex;
273 int cfbGCPrivateIndex;
274 #endif
275 diff -urN xc.orig/programs/Xserver/cfb/cfbbitblt.c xc/programs/Xserver/cfb/cfbbitblt.c
276 --- xc.orig/programs/Xserver/cfb/cfbbitblt.c 2004-04-23 12:00:12.000000000 -0700
277 +++ xc/programs/Xserver/cfb/cfbbitblt.c 2004-12-12 20:34:24.864021584 -0800
278 @@ -973,15 +973,15 @@
279 #else /* PSZ == 8 */
280
281 #define mfbmaskbits(x, w, startmask, endmask, nlw) \
282 - startmask = starttab[(x)&0x1f]; \
283 - endmask = endtab[((x)+(w)) & 0x1f]; \
284 + startmask = mfbGetstarttab((x)&0x1f); \
285 + endmask = mfbGetendtab(((x)+(w)) & 0x1f); \
286 if (startmask) \
287 nlw = (((w) - (32 - ((x)&0x1f))) >> 5); \
288 else \
289 nlw = (w) >> 5;
290
291 #define mfbmaskpartialbits(x, w, mask) \
292 - mask = partmasks[(x)&0x1f][(w)&0x1f];
293 + mask = mfbGetpartmasks((x)&0x1f,(w)&0x1f);
294
295 #define LeftMost 0
296 #define StepBit(bit, inc) ((bit) += (inc))
297 @@ -1389,7 +1389,7 @@
298
299 oldalu = pGC->alu;
300 if ((pGC->fgPixel & 1) == 0 && (pGC->bgPixel&1) == 1)
301 - pGC->alu = InverseAlu[pGC->alu];
302 + pGC->alu = mfbGetInverseAlu(pGC->alu);
303 else if ((pGC->fgPixel & 1) == (pGC->bgPixel & 1))
304 pGC->alu = mfbReduceRop(pGC->alu, pGC->fgPixel);
305 ret = cfbCopyPlaneReduce(pSrcDrawable, pDstDrawable,
306 diff -urN xc.orig/programs/Xserver/cfb/cfbcppl.c xc/programs/Xserver/cfb/cfbcppl.c
307 --- xc.orig/programs/Xserver/cfb/cfbcppl.c 2004-04-23 12:00:12.000000000 -0700
308 +++ xc/programs/Xserver/cfb/cfbcppl.c 2004-12-12 20:34:24.865021432 -0800
309 @@ -245,15 +245,15 @@
310 #else /* PSZ == 8 */
311
312 #define mfbmaskbits(x, w, startmask, endmask, nlw) \
313 - startmask = starttab[(x)&0x1f]; \
314 - endmask = endtab[((x)+(w)) & 0x1f]; \
315 + startmask = mfbGetstarttab((x)&0x1f); \
316 + endmask = mfbGetendtab(((x)+(w)) & 0x1f); \
317 if (startmask) \
318 nlw = (((w) - (32 - ((x)&0x1f))) >> 5); \
319 else \
320 nlw = (w) >> 5;
321
322 #define mfbmaskpartialbits(x, w, mask) \
323 - mask = partmasks[(x)&0x1f][(w)&0x1f];
324 + mask = mfbGetpartmasks((x)&0x1f,(w)&0x1f);
325
326 #define LeftMost 0
327 #define StepBit(bit, inc) ((bit) += (inc))
328 diff -urN xc.orig/programs/Xserver/cfb/cfbgc.c xc/programs/Xserver/cfb/cfbgc.c
329 --- xc.orig/programs/Xserver/cfb/cfbgc.c 2004-04-23 12:00:12.000000000 -0700
330 +++ xc/programs/Xserver/cfb/cfbgc.c 2004-12-12 20:34:24.866021280 -0800
331 @@ -85,11 +85,13 @@
332 # define usePolyGlyphBlt miPolyGlyphBlt
333 #endif
334
335 +void cfbUnPushPixels (GCPtr, PixmapPtr, DrawablePtr, int, int, int, int);
336 +
337 #ifdef FOUR_BIT_CODE
338 # define usePushPixels cfbPushPixels8
339 #else
340 #ifndef LOWMEMFTPT
341 -# define usePushPixels mfbPushPixels
342 +# define usePushPixels cfbUnPushPixels
343 #else
344 # define usePushPixels miPushPixels
345 #endif /* ifndef LOWMEMFTPT */
346 @@ -284,6 +286,14 @@
347 pGC->clientClip = NULL;
348 pGC->clientClipType = CT_NONE;
349
350 + if (cfbNonTEOps.PushPixels == cfbUnPushPixels)
351 + {
352 + cfbTEOps1Rect.PushPixels = mfbPushPixelsWeak();
353 + cfbNonTEOps1Rect.PushPixels = mfbPushPixelsWeak();
354 + cfbTEOps.PushPixels = mfbPushPixelsWeak();
355 + cfbNonTEOps.PushPixels = mfbPushPixelsWeak();
356 + }
357 +
358 /*
359 * some of the output primitives aren't really necessary, since they
360 * will be filled in ValidateGC because of dix/CreateGC() setting all
361 @@ -767,7 +777,7 @@
362 #endif
363 #ifdef FOUR_BIT_CODE
364 #ifndef LOWMEMFTPT
365 - pGC->ops->PushPixels = mfbPushPixels;
366 + pGC->ops->PushPixels = mfbPushPixelsWeak();
367 #else
368 pGC->ops->PushPixels = miPushPixels;
369 #endif /* ifndef LOWMEMFTPT */
370 @@ -789,3 +799,17 @@
371 }
372 }
373 }
374 +
375 +/*
376 + * this is never called, it just exists to have its address
377 + * taken in mfbCreateGC.
378 + */
379 +static void
380 +cfbUnPushPixels (pGC, pBitmap, pDrawable, dx, dy, xOrg, yOrg)
381 + GCPtr pGC;
382 + PixmapPtr pBitmap;
383 + DrawablePtr pDrawable;
384 + int dx, dy, xOrg, yOrg;
385 +{
386 + return;
387 +}
388 diff -urN xc.orig/programs/Xserver/cfb/cfbglblt8.c xc/programs/Xserver/cfb/cfbglblt8.c
389 --- xc.orig/programs/Xserver/cfb/cfbglblt8.c 2004-04-23 12:00:12.000000000 -0700
390 +++ xc/programs/Xserver/cfb/cfbglblt8.c 2004-12-12 20:34:24.867021128 -0800
391 @@ -64,7 +64,6 @@
392
393 #ifdef USE_LEFTBITS
394 typedef unsigned char *glyphPointer;
395 -extern CfbBits endtab[];
396
397 #define GlyphBits(bits,width,dst) getleftbits(bits,width,dst); \
398 (dst) &= widthMask; \
399 @@ -251,7 +250,7 @@
400 #ifdef USE_LEFTBITS
401 w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
402 widthGlyph = PADGLYPHWIDTHBYTES(w);
403 - widthMask = endtab[w];
404 + widthMask = mfbGetendtab(w);
405 #endif
406 do {
407 dst = dstLine;
408 @@ -380,7 +379,7 @@
409 #ifdef USE_LEFTBITS
410 w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing;
411 widthGlyph = PADGLYPHWIDTHBYTES(w);
412 - widthMask = endtab[w];
413 + widthMask = mfbGetendtab(w);
414 #endif
415 switch (cfb8ComputeClipMasks32 (pBox, numRects, xG, yG, w, hTmp, clips))
416 {
417 diff -urN xc.orig/programs/Xserver/cfb/cfbmap.h xc/programs/Xserver/cfb/cfbmap.h
418 --- xc.orig/programs/Xserver/cfb/cfbmap.h 2004-04-23 12:00:12.000000000 -0700
419 +++ xc/programs/Xserver/cfb/cfbmap.h 2004-12-12 20:34:24.867021128 -0800
420 @@ -94,13 +94,17 @@
421 #undef cfbFillSpanTileOddGeneral
422 #undef cfbFinishScreenInit
423 #undef cfbGCFuncs
424 +#undef cfbGCPrivateIndex
425 #undef cfbGetImage
426 #undef cfbGetScreenPixmap
427 #undef cfbGetSpans
428 #undef cfbHorzS
429 #undef cfbImageGlyphBlt8
430 +#undef cfbInitializeColormap
431 +#undef cfbInstallColormap
432 #undef cfbLineSD
433 #undef cfbLineSS
434 +#undef cfbListInstalledColormaps
435 #undef cfbMapWindow
436 #undef cfbMatchCommon
437 #undef cfbNonTEOps
438 @@ -116,6 +120,7 @@
439 #undef cfbPositionWindow
440 #undef cfbPutImage
441 #undef cfbReduceRasterOp
442 +#undef cfbResolveColor
443 #undef cfbRestoreAreas
444 #undef cfbSaveAreas
445 #undef cfbScreenInit
446 @@ -136,11 +141,13 @@
447 #undef cfbTEOps1Rect
448 #undef cfbTile32FSCopy
449 #undef cfbTile32FSGeneral
450 +#undef cfbUninstallColormap
451 #undef cfbUnmapWindow
452 #undef cfbUnnaturalStippleFS
453 #undef cfbUnnaturalTileFS
454 #undef cfbValidateGC
455 #undef cfbVertS
456 +#undef cfbWindowPrivateIndex
457 #undef cfbXRotatePixmap
458 #undef cfbYRotatePixmap
459 #undef cfbZeroPolyArcSS8Copy
460 @@ -263,13 +270,17 @@
461 #define cfbFillSpanTileOddGeneral CFBNAME(FillSpanTileOddGeneral)
462 #define cfbFinishScreenInit CFBNAME(FinishScreenInit)
463 #define cfbGCFuncs CFBNAME(GCFuncs)
464 +#define cfbGCPrivateIndex CFBNAME(GCPrivateIndex)
465 #define cfbGetImage CFBNAME(GetImage)
466 #define cfbGetScreenPixmap CFBNAME(GetScreenPixmap)
467 #define cfbGetSpans CFBNAME(GetSpans)
468 #define cfbHorzS CFBNAME(HorzS)
469 #define cfbImageGlyphBlt8 CFBNAME(ImageGlyphBlt8)
470 +#define cfbInitializeColormap CFBNAME(InitializeColormap)
471 +#define cfbInstallColormap CFBNAME(InstallColormap)
472 #define cfbLineSD CFBNAME(LineSD)
473 #define cfbLineSS CFBNAME(LineSS)
474 +#define cfbListInstalledColormaps CFBNAME(ListInstalledColormaps)
475 #define cfbMapWindow CFBNAME(MapWindow)
476 #define cfbMatchCommon CFBNAME(MatchCommon)
477 #define cfbNonTEOps CFBNAME(NonTEOps)
478 @@ -285,6 +296,7 @@
479 #define cfbPositionWindow CFBNAME(PositionWindow)
480 #define cfbPutImage CFBNAME(PutImage)
481 #define cfbReduceRasterOp CFBNAME(ReduceRasterOp)
482 +#define cfbResolveColor CFBNAME(ResolveColor)
483 #define cfbRestoreAreas CFBNAME(RestoreAreas)
484 #define cfbSaveAreas CFBNAME(SaveAreas)
485 #define cfbScreenInit CFBNAME(ScreenInit)
486 @@ -305,11 +317,13 @@
487 #define cfbTEOps1Rect CFBNAME(TEOps1Rect)
488 #define cfbTile32FSCopy CFBNAME(Tile32FSCopy)
489 #define cfbTile32FSGeneral CFBNAME(Tile32FSGeneral)
490 +#define cfbUninstallColormap CFBNAME(UninstallColormap)
491 #define cfbUnmapWindow CFBNAME(UnmapWindow)
492 #define cfbUnnaturalStippleFS CFBNAME(UnnaturalStippleFS)
493 #define cfbUnnaturalTileFS CFBNAME(UnnaturalTileFS)
494 #define cfbValidateGC CFBNAME(ValidateGC)
495 #define cfbVertS CFBNAME(VertS)
496 +#define cfbWindowPrivateIndex CFBNAME(WindowPrivateIndex)
497 #define cfbXRotatePixmap CFBNAME(XRotatePixmap)
498 #define cfbYRotatePixmap CFBNAME(YRotatePixmap)
499 #define cfbZeroPolyArcSS8Copy CFBNAME(ZeroPolyArcSSCopy)
500 diff -urN xc.orig/programs/Xserver/cfb/cfbpixmap.c xc/programs/Xserver/cfb/cfbpixmap.c
501 --- xc.orig/programs/Xserver/cfb/cfbpixmap.c 2004-04-23 12:00:12.000000000 -0700
502 +++ xc/programs/Xserver/cfb/cfbpixmap.c 2004-12-12 20:34:24.868020976 -0800
503 @@ -60,8 +60,6 @@
504 #include "cfb.h"
505 #include "cfbmskbits.h"
506
507 -extern CfbBits endtab[];
508 -
509 PixmapPtr
510 cfbCreatePixmap (pScreen, width, height, depth)
511 ScreenPtr pScreen;
512 @@ -160,7 +158,7 @@
513 if (rep*width != PGSZ)
514 return;
515
516 - mask = endtab[width];
517 + mask = mfbGetendtab(width);
518
519 p = (CfbBits *)(pPixmap->devPrivate.ptr);
520 for (h=0; h < pPixmap->drawable.height; h++)
521 diff -urN xc.orig/programs/Xserver/cfb/cfbscrinit.c xc/programs/Xserver/cfb/cfbscrinit.c
522 --- xc.orig/programs/Xserver/cfb/cfbscrinit.c 2004-04-23 12:00:12.000000000 -0700
523 +++ xc/programs/Xserver/cfb/cfbscrinit.c 2004-12-12 20:34:24.868020976 -0800
524 @@ -99,7 +99,7 @@
525 pScreen->defColormap = FakeClientID(0);
526 /* let CreateDefColormap do whatever it wants for pixels */
527 pScreen->blackPixel = pScreen->whitePixel = (Pixel) 0;
528 - pScreen->QueryBestSize = mfbQueryBestSize;
529 + pScreen->QueryBestSize = mfbQueryBestSizeWeak();
530 /* SaveScreen */
531 pScreen->GetImage = cfbGetImage;
532 pScreen->GetSpans = cfbGetSpans;
533 @@ -114,8 +114,8 @@
534 pScreen->CopyWindow = cfbCopyWindow;
535 pScreen->CreatePixmap = cfbCreatePixmap;
536 pScreen->DestroyPixmap = cfbDestroyPixmap;
537 - pScreen->RealizeFont = mfbRealizeFont;
538 - pScreen->UnrealizeFont = mfbUnrealizeFont;
539 + pScreen->RealizeFont = mfbRealizeFontWeak();
540 + pScreen->UnrealizeFont = mfbUnrealizeFontWeak();
541 pScreen->CreateGC = cfbCreateGC;
542 pScreen->CreateColormap = cfbInitializeColormap;
543 pScreen->DestroyColormap = DestroyColormapNoop;
544 @@ -124,7 +124,7 @@
545 pScreen->ListInstalledColormaps = cfbListInstalledColormaps;
546 pScreen->StoreColors = StoreColorsNoop;
547 pScreen->ResolveColor = cfbResolveColor;
548 - pScreen->BitmapToRegion = mfbPixmapToRegion;
549 + pScreen->BitmapToRegion = mfbPixmapToRegionWeak();
550
551 mfbRegisterCopyPlaneProc (pScreen, cfbCopyPlane);
552 return TRUE;
553 diff -urN xc.orig/programs/Xserver/cfb/cfbtab.h xc/programs/Xserver/cfb/cfbtab.h
554 --- xc.orig/programs/Xserver/cfb/cfbtab.h 2004-04-23 12:00:12.000000000 -0700
555 +++ xc/programs/Xserver/cfb/cfbtab.h 2004-12-12 20:34:24.869020824 -0800
556 @@ -4,7 +4,9 @@
557 #define _CFBTAB_H_
558
559 /* prototypes */
560 +#if 0
561 extern int starttab[32], endtab[32];
562 extern unsigned int partmasks[32][32];
563 +#endif
564
565 #endif /* _CFBTAB_H_ */
566 diff -urN xc.orig/programs/Xserver/cfb/cfbteblt8.c xc/programs/Xserver/cfb/cfbteblt8.c
567 --- xc.orig/programs/Xserver/cfb/cfbteblt8.c 2004-04-23 12:00:12.000000000 -0700
568 +++ xc/programs/Xserver/cfb/cfbteblt8.c 2004-12-12 20:34:24.869020824 -0800
569 @@ -160,7 +160,6 @@
570 #endif
571
572 #ifdef USE_LEFTBITS
573 -extern CfbBits endtab[];
574
575 #define IncChar(c) (c = (glyphPointer) (((char *) c) + glyphBytes))
576
577 @@ -408,7 +407,7 @@
578 #endif
579
580 #ifdef USE_LEFTBITS
581 - glyphMask = endtab[widthGlyph];
582 + glyphMask = mfbGetendtab(widthGlyph);
583 glyphBytes = GLYPHWIDTHBYTESPADDED(*ppci);
584 #endif
585
586 diff -urN xc.orig/programs/Xserver/cfb/cfbunmap.h xc/programs/Xserver/cfb/cfbunmap.h
587 --- xc.orig/programs/Xserver/cfb/cfbunmap.h 2003-11-25 11:28:27.000000000 -0800
588 +++ xc/programs/Xserver/cfb/cfbunmap.h 2004-12-12 20:34:24.871020520 -0800
589 @@ -93,13 +93,17 @@
590 #undef cfbFillSpanTileOddGeneral
591 #undef cfbFinishScreenInit
592 #undef cfbGCFuncs
593 +#undef cfbGCPrivateIndex
594 #undef cfbGetImage
595 #undef cfbGetScreenPixmap
596 #undef cfbGetSpans
597 #undef cfbHorzS
598 #undef cfbImageGlyphBlt8
599 +#undef cfbInitializeColormap
600 +#undef cfbInstallColormap
601 #undef cfbLineSD
602 #undef cfbLineSS
603 +#undef cfbListInstalledColormaps
604 #undef cfbMapWindow
605 #undef cfbMatchCommon
606 #undef cfbNonTEOps
607 @@ -115,6 +119,7 @@
608 #undef cfbPositionWindow
609 #undef cfbPutImage
610 #undef cfbReduceRasterOp
611 +#undef cfbResolveColor
612 #undef cfbRestoreAreas
613 #undef cfbSaveAreas
614 #undef cfbScreenInit
615 @@ -135,11 +140,13 @@
616 #undef cfbTEOps1Rect
617 #undef cfbTile32FSCopy
618 #undef cfbTile32FSGeneral
619 +#undef cfbUninstallColormap
620 #undef cfbUnmapWindow
621 #undef cfbUnnaturalStippleFS
622 #undef cfbUnnaturalTileFS
623 #undef cfbValidateGC
624 #undef cfbVertS
625 +#undef cfbWindowPrivateIndex
626 #undef cfbXRotatePixmap
627 #undef cfbYRotatePixmap
628 #undef cfbZeroPolyArcSS8Copy
629 diff -urN xc.orig/programs/Xserver/mfb/maskbits.c xc/programs/Xserver/mfb/maskbits.c
630 --- xc.orig/programs/Xserver/mfb/maskbits.c 2004-07-30 13:30:57.000000000 -0700
631 +++ xc/programs/Xserver/mfb/maskbits.c 2004-12-12 20:34:24.873020216 -0800
632 @@ -1053,5 +1053,9 @@
633 { O,O,O,I, }, /* set 0xf 1 */
634 };
635
636 +mergeRopPtr mergeGetRopBits(int i) {
637 + return &mergeRopBits[i];
638 +}
639 +
640 #undef O
641 #undef I
642 diff -urN xc.orig/programs/Xserver/mfb/maskbits.h xc/programs/Xserver/mfb/maskbits.h
643 --- xc.orig/programs/Xserver/mfb/maskbits.h 2004-07-30 13:30:57.000000000 -0700
644 +++ xc/programs/Xserver/mfb/maskbits.h 2004-12-12 20:34:24.874020064 -0800
645 @@ -396,7 +396,7 @@
646 else \
647 { \
648 register int d = PPW-(x); \
649 - *(pdst) = (*(pdst) & endtab[x]) | (SCRRIGHT((src), x)); \
650 + *(pdst) = (*(pdst) & mfbGetendtab(x)) | (SCRRIGHT((src), x)); \
651 (pdst)[1] = ((pdst)[1] & mfbGetstarttab(n)) | \
652 (SCRLEFT(src, d) & mfbGetendtab(n)); \
653 } \
654 diff -urN xc.orig/programs/Xserver/mfb/mergerop.h xc/programs/Xserver/mfb/mergerop.h
655 --- xc.orig/programs/Xserver/mfb/mergerop.h 2004-04-23 12:54:25.000000000 -0700
656 +++ xc/programs/Xserver/mfb/mergerop.h 2004-12-12 20:34:24.875019912 -0800
657 @@ -39,6 +39,7 @@
658 } mergeRopRec, *mergeRopPtr;
659
660 extern mergeRopRec mergeRopBits[16];
661 +extern mergeRopPtr mergeGetRopBits(int i);
662
663 #if defined(PPW) && defined(PGSZ) && (PPW != PGSZ) /* cfb */
664 #define DeclareMergeRop() MfbBits _ca1 = 0, _cx1 = 0, _ca2 = 0, _cx2 = 0;
665 @@ -59,7 +60,7 @@
666 MfbBits _pm; \
667 mergeRopPtr _bits; \
668 _pm = PFILL(pm); \
669 - _bits = &mergeRopBits[alu]; \
670 + _bits = mergeGetRopBits(alu); \
671 _ca1 = _bits->ca1 & _pm; \
672 _cx1 = _bits->cx1 | ~_pm; \
673 _ca2 = _bits->ca2 & _pm; \
674 @@ -70,7 +71,7 @@
675 #define InitializeMergeRop24(alu,pm) {\
676 register int i; \
677 register MfbBits _pm = (pm) & 0xFFFFFF; \
678 - mergeRopPtr _bits = &mergeRopBits[alu]; \
679 + mergeRopPtr _bits = mergeGetRopBits(alu); \
680 MfbBits _bits_ca1 = _bits->ca1; \
681 MfbBits _bits_cx1 = _bits->cx1; \
682 MfbBits _bits_ca2 = _bits->ca2; \
683 @@ -88,7 +89,7 @@
684 #define InitializeMergeRop24(alu,pm) {\
685 register int i; \
686 register MfbBits _pm = (pm) & cfbmask[0]; \
687 - mergeRopPtr _bits = &mergeRopBits[alu]; \
688 + mergeRopPtr _bits = mergeGetRopBits(alu); \
689 MfbBits _bits_ca1 = _bits->ca1 & cfbmask[0]; \
690 MfbBits _bits_cx1 = _bits->cx1 & cfbmask[0]; \
691 MfbBits _bits_ca2 = _bits->ca2 & cfbmask[0]; \
692 @@ -111,7 +112,7 @@
693 #else /* mfb */
694 #define InitializeMergeRop(alu,pm) {\
695 mergeRopPtr _bits; \
696 - _bits = &mergeRopBits[alu]; \
697 + _bits = mergeGetRopBits(alu); \
698 _ca1 = _bits->ca1; \
699 _cx1 = _bits->cx1; \
700 _ca2 = _bits->ca2; \
701 @@ -328,7 +329,7 @@
702 #define MROP_DECLARE_REG() register MROP_DECLARE()
703 #define MROP_INITIALIZE(alu,pm) { \
704 mergeRopPtr _bits; \
705 - _bits = &mergeRopBits[alu]; \
706 + _bits = mergeGetRopBits(alu); \
707 _ca1 = _bits->ca1; \
708 _cx1 = _bits->cx1; \
709 }
710 diff -urN xc.orig/programs/Xserver/mfb/mfb.h xc/programs/Xserver/mfb/mfb.h
711 --- xc.orig/programs/Xserver/mfb/mfb.h 2004-07-30 13:30:57.000000000 -0700
712 +++ xc/programs/Xserver/mfb/mfb.h 2004-12-12 20:34:24.875019912 -0800
713 @@ -64,7 +64,7 @@
714 #include "mibstore.h"
715
716 extern int InverseAlu[];
717 -
718 +extern int mfbGetInverseAlu(int i);
719
720 /* warning: PixelType definition duplicated in maskbits.h */
721 #ifndef PixelType
722 @@ -229,6 +229,13 @@
723 extern RegionPtr mfbPixmapToRegion(
724 PixmapPtr /*pPix*/
725 );
726 +
727 +#ifndef MFB_PROTOTYPES_ONLY
728 +typedef RegionPtr (*mfbPixmapToRegionProc)(PixmapPtr);
729 +
730 +extern mfbPixmapToRegionProc *mfbPixmapToRegionWeak(void);
731 +#endif
732 +
733 /* mfbcmap.c */
734
735 extern int mfbListInstalledColormaps(
736 @@ -371,6 +378,15 @@
737 ScreenPtr /*pscr*/,
738 FontPtr /*pFont*/
739 );
740 +
741 +#ifndef MFB_PROTOTYPES_ONLY
742 +typedef void (*mfbRealizeFontProc)(ScreenPtr, FontPtr);
743 +typedef void (*mfbUnrealizeFontProc)(ScreenPtr, FontPtr);
744 +
745 +extern mfbRealizeFontProc *mfbRealizeFontWeak(void);
746 +extern mfbUnrealizeFontProc *mfbUnrealizeFontWeak(void);
747 +#endif
748 +
749 /* mfbgc.c */
750
751 extern Bool mfbCreateGC(
752 @@ -490,6 +506,14 @@
753 unsigned short * /*pheight*/,
754 ScreenPtr /*pScreen*/
755 );
756 +
757 +#ifndef MFB_PROTOTYPES_ONLY
758 +typedef void (*mfbQueryBestSizeProc)(int, unsigned short *, unsigned short *,
759 + ScreenPtr);
760 +
761 +extern mfbQueryBestSizeProc *mfbQueryBestSizeWeak(void);
762 +#endif
763 +
764 /* mfbpablack.c */
765
766 extern void mfbSolidBlackArea(
767 @@ -680,6 +704,14 @@
768 int /*xOrg*/,
769 int /*yOrg*/
770 );
771 +
772 +#ifndef MFB_PROTOTYPES_ONLY
773 +typedef void (*mfbPushPixelsProc)(GCPtr, PixmapPtr, DrawablePtr, int, int,
774 + int, int);
775 +
776 +extern mfbPushPixelsProc *mfbPushPixelsWeak(void);
777 +#endif
778 +
779 /* mfbscrclse.c */
780
781 extern Bool mfbCloseScreen(
782 diff -urN xc.orig/programs/Xserver/mfb/mfbclip.c xc/programs/Xserver/mfb/mfbclip.c
783 --- xc.orig/programs/Xserver/mfb/mfbclip.c 2004-04-23 12:54:25.000000000 -0700
784 +++ xc/programs/Xserver/mfb/mfbclip.c 2004-12-12 20:34:24.876019760 -0800
785 @@ -268,3 +268,9 @@
786 #endif
787 return(pReg);
788 }
789 +
790 +mfbPixmapToRegionProc *
791 +mfbPixmapToRegionWeak(void)
792 +{
793 + return mfbPixmapToRegion;
794 +}
795 diff -urN xc.orig/programs/Xserver/mfb/mfbfont.c xc/programs/Xserver/mfb/mfbfont.c
796 --- xc.orig/programs/Xserver/mfb/mfbfont.c 2003-11-14 08:48:57.000000000 -0800
797 +++ xc/programs/Xserver/mfb/mfbfont.c 2004-12-12 20:34:24.876019760 -0800
798 @@ -62,6 +62,12 @@
799 return (TRUE);
800 }
801
802 +mfbRealizeFontProc *
803 +mfbRealizeFontWeak(void)
804 +{
805 + return mfbRealizeFont;
806 +}
807 +
808 /*ARGSUSED*/
809 Bool
810 mfbUnrealizeFont( pscr, pFont)
811 @@ -70,3 +76,9 @@
812 {
813 return (TRUE);
814 }
815 +
816 +mfbUnrealizeFontProc *
817 +mfbUnrealizeFontWeak(void)
818 +{
819 + return mfbUnrealizeFont;
820 +}
821 diff -urN xc.orig/programs/Xserver/mfb/mfbgc.c xc/programs/Xserver/mfb/mfbgc.c
822 --- xc.orig/programs/Xserver/mfb/mfbgc.c 2004-04-23 12:54:25.000000000 -0700
823 +++ xc/programs/Xserver/mfb/mfbgc.c 2004-12-12 20:34:24.877019608 -0800
824 @@ -1454,6 +1454,12 @@
825 GXset
826 };
827
828 +int mfbGetInverseAlu(i)
829 + int i;
830 +{
831 + return InverseAlu[i];
832 +}
833 +
834 int
835 mfbReduceRop(alu, src)
836 register int alu;
837 diff -urN xc.orig/programs/Xserver/mfb/mfbmisc.c xc/programs/Xserver/mfb/mfbmisc.c
838 --- xc.orig/programs/Xserver/mfb/mfbmisc.c 2003-11-14 08:48:57.000000000 -0800
839 +++ xc/programs/Xserver/mfb/mfbmisc.c 2004-12-12 20:34:24.877019608 -0800
840 @@ -89,3 +89,8 @@
841 }
842 }
843
844 +mfbQueryBestSizeProc *
845 +mfbQueryBestSizeWeak(void)
846 +{
847 + return mfbQueryBestSize;
848 +}
849 diff -urN xc.orig/programs/Xserver/mfb/mfbpushpxl.c xc/programs/Xserver/mfb/mfbpushpxl.c
850 --- xc.orig/programs/Xserver/mfb/mfbpushpxl.c 2004-04-23 12:54:25.000000000 -0700
851 +++ xc/programs/Xserver/mfb/mfbpushpxl.c 2004-12-12 20:34:24.878019456 -0800
852 @@ -276,3 +276,8 @@
853 (*pGC->ops->FillSpans)(pDrawable, pGC, ipt, pt, width, TRUE);
854 }
855 }
856 +
857 +mfbPushPixelsProc *mfbPushPixelsWeak(void)
858 +{
859 + return mfbPushPixels;
860 +}