Contents of /trunk/xorg-old/patches-6.8.2-r10/0485_all_6.8.0-afb-cfb-dlloader-fixes.patch
Parent Directory | Revision Log
Revision 167 -
(show annotations)
(download)
Tue May 8 20:58:51 2007 UTC (17 years, 4 months ago) by niro
File size: 28674 byte(s)
Tue May 8 20:58:51 2007 UTC (17 years, 4 months 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 | +} |