Index: Imakefile =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/sunleo/Imakefile,v retrieving revision 1.2 diff -u -r1.2 Imakefile --- Imakefile 23 Apr 2004 19:48:50 -0000 1.2 +++ Imakefile 28 Sep 2004 22:56:45 -0000 @@ -6,19 +6,19 @@ #define IHaveModules #include -SRCS = leo_driver.c leo_accel.c leo_bcopy.c leo_checks.c leo_frect.c \ - leo_frectsp.c leo_fspans.c leo_fspanssp.c leo_gc.c leo_glyph.c \ - leo_stubs.c leo_cursor.c -OBJS = leo_driver.o leo_accel.o leo_bcopy.o leo_checks.o leo_frect.o \ - leo_frectsp.o leo_fspans.o leo_fspanssp.o leo_gc.o leo_glyph.o \ - leo_stubs.o leo_cursor.o +SRCS = leo_driver.c leo_accel.c leo_checks.c leo_frect.c \ + leo_frectsp.c leo_fspans.c leo_fspanssp.c leo_glyph.c \ + leo_cursor.c +OBJS = leo_driver.o leo_accel.o leo_checks.o leo_frect.o \ + leo_frectsp.o leo_fspans.o leo_fspanssp.o leo_glyph.o \ + leo_cursor.o #if defined(XF86DriverSDK) INCLUDES = -I. -I../../include #else INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86OSSRC) \ - -I$(SERVERSRC)/mfb -I$(SERVERSRC)/mi \ - -I$(SERVERSRC)/Xext -I$(SERVERSRC)/cfb \ + -I$(SERVERSRC)/fb -I$(SERVERSRC)/mi \ + -I$(SERVERSRC)/Xext -I$(SERVERSRC)/render \ -I$(XF86SRC)/ramdac \ -I$(FONTINCSRC) -I$(SERVERSRC)/include -I$(XINCLUDESRC) \ -I$(EXTINCSRC) Index: leo_accel.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/sunleo/leo_accel.c,v retrieving revision 1.2 diff -u -r1.2 leo_accel.c --- leo_accel.c 23 Apr 2004 19:48:50 -0000 1.2 +++ leo_accel.c 28 Sep 2004 22:56:45 -0000 @@ -30,19 +30,13 @@ #include "mistruct.h" #include "fontstruct.h" #include "dixfontstr.h" -#include "cfb.h" -#include "cfbmskbits.h" -#include "cfb8bit.h" +#include "fb.h" #include "mibstore.h" #include "mifillarc.h" #include "miwideline.h" -#include "fastblt.h" -#include "mergerop.h" -#include "migc.h" #include "mi.h" #include "leo.h" -#include "leo_gc.h" int LeoScreenPrivateIndex; int LeoGCPrivateIndex; @@ -68,49 +62,6 @@ LEO_ATTR_RGBE_ENABLE|LEO_ROP_ONES /* GXset */ }; -static void -LeoCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) -{ - ScreenPtr pScreen = pWin->drawable.pScreen; - LeoPtr pLeo = LeoGetScreenPrivate (pScreen); - DDXPointPtr pptSrc; - DDXPointPtr ppt; - RegionPtr prgnDst; - BoxPtr pbox; - int dx, dy; - int i, nbox; - WindowPtr pwinRoot; - - if (pLeo->vtSema) - return; - - dx = ptOldOrg.x - pWin->drawable.x; - dy = ptOldOrg.y - pWin->drawable.y; - - pwinRoot = WindowTable[pWin->drawable.pScreen->myNum]; - - prgnDst = REGION_CREATE(pWin->drawable.pScreen, NULL, 1); - - REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy); - REGION_INTERSECT(pWin->drawable.pScreen, prgnDst, &pWin->borderClip, prgnSrc); - - pbox = REGION_RECTS(prgnDst); - nbox = REGION_NUM_RECTS(prgnDst); - if(!(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec)))) - return; - ppt = pptSrc; - - for (i = nbox; --i >= 0; ppt++, pbox++) { - ppt->x = pbox->x1 + dx; - ppt->y = pbox->y1 + dy; - } - - LeoDoBitblt ((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot, - GXcopy, prgnDst, pptSrc, ~0L); - DEALLOCATE_LOCAL(pptSrc); - REGION_DESTROY(pWin->drawable.pScreen, prgnDst); -} - void LeoVtChange (ScreenPtr pScreen, int enter) { LeoPtr pLeo = LeoGetScreenPrivate (pScreen); @@ -161,11 +112,7 @@ pLeo->lc0 = lc0 = (LeoCommand0 *) ((char *)pLeo->fb + LEO_LC0_VOFF); pLeo->ld0 = ld0 = (LeoDraw *) ((char *)pLeo->fb + LEO_LD0_VOFF); - if (!pLeo->NoAccel) { - /* Replace various screen functions. */ - pScreen->CreateGC = LeoCreateGC; - pScreen->CopyWindow = LeoCopyWindow; - } + if (!pLeo->NoAccel) /* XXX do nothing */ ; /* We will now clear the screen: we'll draw a rectangle covering all the * viewscreen, using a 'blackness' ROP. Index: leo_bcopy.c =================================================================== RCS file: leo_bcopy.c diff -N leo_bcopy.c --- leo_bcopy.c 23 Apr 2004 19:48:50 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,178 +0,0 @@ -/* - * Acceleration for the Leo (ZX) framebuffer - Bit-blit copies. - * - * Copyright (C) 1999 Jakub Jelinek (jakub@redhat.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * JAKUB JELINEK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -/* $XFree86$ */ - -#define PSZ 32 - -#include "leo.h" -#include "leo_regs.h" - -#include "pixmapstr.h" -#include "scrnintstr.h" - -#include "cfb.h" - -void -LeoDoBitblt(DrawablePtr pSrc, DrawablePtr pDst, int alu, RegionPtr prgnDst, - DDXPointPtr pptSrc, unsigned long planemask) -{ - LeoPtr pLeo = LeoGetScreenPrivate (pDst->pScreen); - LeoCommand0 *lc0 = pLeo->lc0; - LeoDraw *ld0 = pLeo->ld0; - BoxPtr pboxTmp; - DDXPointPtr pptTmp; - int nbox; - BoxPtr pboxNext, pboxBase, pbox; - - pbox = REGION_RECTS(prgnDst); - nbox = REGION_NUM_RECTS(prgnDst); - - pptTmp = pptSrc; - pboxTmp = pbox; - - ld0->rop = leoRopTable[alu]; - - if (pptSrc->y < pbox->y1) { - if (pptSrc->x < pbox->x1) { - /* reverse order of bands and rects in each band */ - pboxTmp=pbox+nbox; - pptTmp=pptSrc+nbox; - - while (nbox--){ - pboxTmp--; - pptTmp--; - if (pptTmp->y <= pboxTmp->y2) { - lc0->extent = 0x80000000 | (pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->src = (pptTmp->x + pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pptTmp->y + pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->copy = (pboxTmp->x2 - 1) | ((pboxTmp->y2 - 1) << 11); - } else { - lc0->extent = (pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->src = pptTmp->x | (pptTmp->y << 11); - lc0->copy = pboxTmp->x1 | (pboxTmp->y1 << 11); - } - while (lc0->csr & LEO_CSR_BLT_BUSY); - } - } else { - /* keep ordering in each band, reverse order of bands */ - pboxBase = pboxNext = pbox+nbox-1; - - while (pboxBase >= pbox) { /* for each band */ - - /* find first box in band */ - while (pboxNext >= pbox && - pboxBase->y1 == pboxNext->y1) - pboxNext--; - - pboxTmp = pboxNext+1; /* first box in band */ - pptTmp = pptSrc + (pboxTmp - pbox); /* first point in band */ - - while (pboxTmp <= pboxBase) { /* for each box in band */ - if (pptTmp->y <= pboxTmp->y2) { - lc0->extent = 0x80000000 | (pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->src = (pptTmp->x + pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pptTmp->y + pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->copy = (pboxTmp->x2 - 1) | ((pboxTmp->y2 - 1) << 11); - } else { - lc0->extent = (pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->src = pptTmp->x | (pptTmp->y << 11); - lc0->copy = pboxTmp->x1 | (pboxTmp->y1 << 11); - } - while (lc0->csr & LEO_CSR_BLT_BUSY); - ++pboxTmp; - ++pptTmp; - } - pboxBase = pboxNext; - - } - } - } else { - if (pptSrc->x < pbox->x1) { - /* reverse order of rects in each band */ - - pboxBase = pboxNext = pbox; - - while (pboxBase < pbox+nbox) { /* for each band */ - - /* find last box in band */ - while (pboxNext < pbox+nbox && - pboxNext->y1 == pboxBase->y1) - pboxNext++; - - pboxTmp = pboxNext; /* last box in band */ - pptTmp = pptSrc + (pboxTmp - pbox); /* last point in band */ - - if (pptSrc->y == pbox->y1) { - while (pboxTmp != pboxBase) { /* for each box in band */ - --pboxTmp; - --pptTmp; - lc0->extent = 0x80000000 | (pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->src = (pptTmp->x + pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pptTmp->y + pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->copy = (pboxTmp->x2 - 1) | ((pboxTmp->y2 - 1) << 11); - while (lc0->csr & LEO_CSR_BLT_BUSY); - } - } else { - while (pboxTmp != pboxBase) { /* for each box in band */ - --pboxTmp; - --pptTmp; - lc0->extent = (pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->src = pptTmp->x | (pptTmp->y << 11); - lc0->copy = pboxTmp->x1 | (pboxTmp->y1 << 11); - while (lc0->csr & LEO_CSR_BLT_BUSY); - } - } - pboxBase = pboxNext; - } - } else { - while (nbox--) { - lc0->extent = (pboxTmp->x2 - pboxTmp->x1 - 1) | - ((pboxTmp->y2 - pboxTmp->y1 - 1) << 11); - lc0->src = pptTmp->x | (pptTmp->y << 11); - lc0->copy = pboxTmp->x1 | (pboxTmp->y1 << 11); - while (lc0->csr & LEO_CSR_BLT_BUSY); - pboxTmp++; - pptTmp++; - } - } - } - - ld0->rop = LEO_ATTR_RGBE_ENABLE|LEO_ROP_NEW; -} - -RegionPtr -LeoCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, - GCPtr pGC, int srcx, int srcy, int width, int height, int dstx, int dsty) -{ - if (pSrcDrawable->type != DRAWABLE_WINDOW) - return cfbCopyArea (pSrcDrawable, pDstDrawable, - pGC, srcx, srcy, width, height, dstx, dsty); - return cfbBitBlt (pSrcDrawable, pDstDrawable, - pGC, srcx, srcy, width, height, dstx, dsty, (void (*)())LeoDoBitblt, 0); -} Index: leo_checks.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/sunleo/leo_checks.c,v retrieving revision 1.2 diff -u -r1.2 leo_checks.c --- leo_checks.c 23 Apr 2004 19:48:50 -0000 1.2 +++ leo_checks.c 28 Sep 2004 22:56:45 -0000 @@ -29,7 +29,7 @@ #include "pixmapstr.h" #include "scrnintstr.h" -#include "cfb.h" +#include "fb.h" int LeoCheckTile (PixmapPtr pPixmap, LeoStipplePtr stipple, int ox, int oy) Index: leo_driver.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/sunleo/leo_driver.c,v retrieving revision 1.2 diff -u -r1.2 leo_driver.c --- leo_driver.c 23 Apr 2004 19:48:50 -0000 1.2 +++ leo_driver.c 28 Sep 2004 22:56:45 -0000 @@ -31,9 +31,7 @@ #include "mibstore.h" #include "micmap.h" -#define PSZ 32 -#include "cfb.h" -#undef PSZ +#include "fb.h" #include "xf86cmap.h" #include "leo.h" @@ -414,7 +412,7 @@ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Acceleration disabled\n"); } - if (xf86LoadSubModule(pScrn, "cfb32") == NULL) { + if (xf86LoadSubModule(pScrn, "fb") == NULL) { LeoFreeRec(pScrn); return FALSE; } @@ -502,9 +500,9 @@ * pScreen fields. */ - ret = cfb32ScreenInit(pScreen, pLeo->fb, pScrn->virtualX, - pScrn->virtualY, pScrn->xDpi, pScrn->yDpi, - 2048); + ret = fbScreenInit(pScreen, pLeo->fb, pScrn->virtualX, + pScrn->virtualY, pScrn->xDpi, pScrn->yDpi, + 2048, pScrn->bitsPerPixel); if (!ret) return FALSE; Index: leo_frect.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/sunleo/leo_frect.c,v retrieving revision 1.2 diff -u -r1.2 leo_frect.c --- leo_frect.c 23 Apr 2004 19:48:50 -0000 1.2 +++ leo_frect.c 28 Sep 2004 22:56:45 -0000 @@ -30,8 +30,7 @@ #include "pixmapstr.h" #include "scrnintstr.h" -#include "cfb.h" -#include "cfbmskbits.h" +#include "fb.h" void LeoPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, xRectangle *prectInit) @@ -50,7 +49,7 @@ if(nrectFill <= 0) return; - prgnClip = cfbGetCompositeClip(pGC); + prgnClip = fbGetCompositeClip(pGC); prect = prectInit; xorg = pDrawable->x; @@ -178,7 +177,7 @@ if(nrectFill <= 0) return; - prgnClip = cfbGetCompositeClip(pGC); + prgnClip = fbGetCompositeClip(pGC); prect = prectInit; xorg = pDrawable->x; Index: leo_frectsp.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/sunleo/leo_frectsp.c,v retrieving revision 1.2 diff -u -r1.2 leo_frectsp.c --- leo_frectsp.c 23 Apr 2004 19:48:50 -0000 1.2 +++ leo_frectsp.c 28 Sep 2004 22:56:45 -0000 @@ -30,8 +30,7 @@ #include "pixmapstr.h" #include "scrnintstr.h" -#include "cfb.h" -#include "cfbmskbits.h" +#include "fb.h" void LeoPolyFillStippledRect(DrawablePtr pDrawable, GCPtr pGC, int nrectFill, xRectangle *prectInit) @@ -53,7 +52,7 @@ if(nrectFill <= 0) return; - prgnClip = cfbGetCompositeClip(pGC); + prgnClip = fbGetCompositeClip(pGC); prect = prectInit; xorg = pDrawable->x; Index: leo_fspans.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/sunleo/leo_fspans.c,v retrieving revision 1.2 diff -u -r1.2 leo_fspans.c --- leo_fspans.c 23 Apr 2004 19:48:50 -0000 1.2 +++ leo_fspans.c 28 Sep 2004 22:56:45 -0000 @@ -29,7 +29,7 @@ #include "pixmapstr.h" #include "scrnintstr.h" -#include "cfb.h" +#include "fb.h" #include "mi.h" #include "mispans.h" @@ -48,7 +48,7 @@ int fg; int cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0; - clip = cfbGetCompositeClip(pGC); + clip = fbGetCompositeClip(pGC); numRects = REGION_NUM_RECTS(clip); if (!numRects) Index: leo_fspanssp.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/sunleo/leo_fspanssp.c,v retrieving revision 1.2 diff -u -r1.2 leo_fspanssp.c --- leo_fspanssp.c 23 Apr 2004 19:48:50 -0000 1.2 +++ leo_fspanssp.c 28 Sep 2004 22:56:45 -0000 @@ -29,7 +29,7 @@ #include "pixmapstr.h" #include "scrnintstr.h" -#include "cfb.h" +#include "fb.h" #include "mi.h" #include "mispans.h" @@ -49,7 +49,7 @@ unsigned int *bits, msk; int cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0; - clip = cfbGetCompositeClip(pGC); + clip = fbGetCompositeClip(pGC); numRects = REGION_NUM_RECTS(clip); if (!numRects) Index: leo_gc.c =================================================================== RCS file: leo_gc.c diff -N leo_gc.c --- leo_gc.c 23 Apr 2004 19:48:50 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,592 +0,0 @@ -/* - * Acceleration for the Leo (ZX) framebuffer - GC implementation. - * - * Copyright (C) 1999, 2000 Jakub Jelinek (jakub@redhat.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * JAKUB JELINEK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/sunleo/leo_gc.c,v 1.1 2000/05/18 23:21:40 dawes Exp $ */ - -#define PSZ 32 - -#include "leo.h" -#include "leo_regs.h" -#include "leo_gc.h" - -#include "X.h" -#include "Xmd.h" -#include "Xproto.h" -#include "cfb.h" -#include "fontstruct.h" -#include "dixfontstr.h" -#include "gcstruct.h" -#include "windowstr.h" -#include "pixmapstr.h" -#include "scrnintstr.h" -#include "region.h" - -#include "mistruct.h" -#include "mibstore.h" -#include "migc.h" - -#include "cfbmskbits.h" -#include "cfb8bit.h" - -void LeoValidateGC(GCPtr, unsigned long, DrawablePtr); -static void LeoDestroyGC(GCPtr); - -GCFuncs LeoGCFuncs = { - LeoValidateGC, - miChangeGC, - miCopyGC, - LeoDestroyGC, - miChangeClip, - miDestroyClip, - miCopyClip, -}; - -GCOps LeoTEOps1Rect = { - cfbSolidSpansCopy, - cfbSetSpans, - cfbPutImage, - LeoCopyArea, - cfbCopyPlane, - cfbPolyPoint, - cfb8LineSS1Rect, - cfb8SegmentSS1Rect, - miPolyRectangle, - cfbZeroPolyArcSS8Copy, - cfbFillPoly1RectCopy, - LeoPolyFillRect1Rect, - cfbPolyFillArcSolidCopy, - miPolyText8, - miPolyText16, - miImageText8, - miImageText16, - LeoTEGlyphBlt, - LeoPolyTEGlyphBlt, - mfbPushPixels -#ifdef NEED_LINEHELPER - ,NULL -#endif -}; - -GCOps LeoNonTEOps1Rect = { - cfbSolidSpansCopy, - cfbSetSpans, - cfbPutImage, - LeoCopyArea, - cfbCopyPlane, - cfbPolyPoint, - cfb8LineSS1Rect, - cfb8SegmentSS1Rect, - miPolyRectangle, - cfbZeroPolyArcSS8Copy, - cfbFillPoly1RectCopy, - LeoPolyFillRect1Rect, - cfbPolyFillArcSolidCopy, - miPolyText8, - miPolyText16, - miImageText8, - miImageText16, - cfbImageGlyphBlt8, - LeoPolyGlyphBlt, - mfbPushPixels -#ifdef NEED_LINEHELPER - ,NULL -#endif -}; - -GCOps LeoTEOps = { - cfbSolidSpansCopy, - cfbSetSpans, - cfbPutImage, - LeoCopyArea, - cfbCopyPlane, - cfbPolyPoint, - cfbLineSS, - cfbSegmentSS, - miPolyRectangle, - cfbZeroPolyArcSS8Copy, - miFillPolygon, - LeoPolyFillRect, - cfbPolyFillArcSolidCopy, - miPolyText8, - miPolyText16, - miImageText8, - miImageText16, - LeoTEGlyphBlt, - LeoPolyTEGlyphBlt, - mfbPushPixels -#ifdef NEED_LINEHELPER - ,NULL -#endif -}; - -GCOps LeoNonTEOps = { - cfbSolidSpansCopy, - cfbSetSpans, - cfbPutImage, - LeoCopyArea, - cfbCopyPlane, - cfbPolyPoint, - cfbLineSS, - cfbSegmentSS, - miPolyRectangle, - cfbZeroPolyArcSS8Copy, - miFillPolygon, - LeoPolyFillRect, - cfbPolyFillArcSolidCopy, - miPolyText8, - miPolyText16, - miImageText8, - miImageText16, - cfbImageGlyphBlt8, - LeoPolyGlyphBlt, - mfbPushPixels -#ifdef NEED_LINEHELPER - ,NULL -#endif -}; - -GCOps * -LeoMatchCommon (GCPtr pGC, cfbPrivGCPtr devPriv) -{ - if (pGC->lineWidth != 0) - return 0; - if (pGC->lineStyle != LineSolid) - return 0; - if (pGC->fillStyle != FillSolid) - return 0; - if (devPriv->rop != GXcopy) - return 0; - if (pGC->font && - FONTMAXBOUNDS(pGC->font,rightSideBearing) - - FONTMINBOUNDS(pGC->font,leftSideBearing) <= 32 && - FONTMINBOUNDS(pGC->font,characterWidth) >= 0) { - if (TERMINALFONT(pGC->font)) - if (devPriv->oneRect) - return &LeoTEOps1Rect; - else - return &LeoTEOps; - else - if (devPriv->oneRect) - return &LeoNonTEOps1Rect; - else - return &LeoNonTEOps; - } - return 0; -} - -Bool -LeoCreateGC(GCPtr pGC) -{ - LeoPrivGCPtr gcPriv; - - if (pGC->depth == 1) - return mfbCreateGC (pGC); - if (!cfbCreateGC (pGC)) - return FALSE; - - pGC->ops = & LeoNonTEOps; - pGC->funcs = & LeoGCFuncs; - gcPriv = LeoGetGCPrivate (pGC); - gcPriv->type = DRAWABLE_WINDOW; - gcPriv->stipple = 0; - return TRUE; -} - -static void -LeoDestroyGC (GCPtr pGC) -{ - LeoPrivGCPtr gcPriv = LeoGetGCPrivate (pGC); - - if (gcPriv->stipple) - xfree (gcPriv->stipple); - miDestroyGC (pGC); -} - -void -LeoValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable) -{ - int mask; - int index; - int new_rrop; - int new_line, new_text, new_fillspans, new_fillarea; - int new_rotate; - int xrot, yrot; - /* flags for changing the proc vector */ - LeoPrivGCPtr gcPriv; - cfbPrivGCPtr devPriv; - int oneRect, type; - LeoPtr pLeo = LeoGetScreenPrivate (pDrawable->pScreen); - - gcPriv = LeoGetGCPrivate (pGC); - type = pLeo->vtSema ? -1 : pDrawable->type; - if (type != DRAWABLE_WINDOW) { - if (gcPriv->type == DRAWABLE_WINDOW) { - extern GCOps cfbNonTEOps; - - miDestroyGCOps (pGC->ops); - pGC->ops = &cfbNonTEOps; - changes = (1 << (GCLastBit+1)) - 1; - pGC->stateChanges = changes; - gcPriv->type = type; - } - cfbValidateGC (pGC, changes, pDrawable); - return; - } - - if (gcPriv->type != DRAWABLE_WINDOW) { - changes = (1 << (GCLastBit+1)) - 1; - gcPriv->type = DRAWABLE_WINDOW; - } - - new_rotate = pGC->lastWinOrg.x != pDrawable->x || - pGC->lastWinOrg.y != pDrawable->y; - - pGC->lastWinOrg.x = pDrawable->x; - pGC->lastWinOrg.y = pDrawable->y; - devPriv = cfbGetGCPrivate(pGC); - - new_rrop = FALSE; - new_line = FALSE; - new_text = FALSE; - new_fillspans = FALSE; - new_fillarea = FALSE; - - /* - * if the client clip is different or moved OR the subwindowMode has - * changed OR the window's clip has changed since the last validation - * we need to recompute the composite clip - */ - - if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) || - (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS))) { - miComputeCompositeClip (pGC, pDrawable); - oneRect = REGION_NUM_RECTS(cfbGetCompositeClip(pGC)) == 1; - if (oneRect != devPriv->oneRect) - new_line = TRUE; - devPriv->oneRect = oneRect; - } - - mask = changes; - while (mask) { - index = lowbit (mask); - mask &= ~index; - - /* - * this switch acculmulates a list of which procedures might have - * to change due to changes in the GC. in some cases (e.g. - * changing one 16 bit tile for another) we might not really need - * a change, but the code is being paranoid. this sort of batching - * wins if, for example, the alu and the font have been changed, - * or any other pair of items that both change the same thing. - */ - switch (index) { - case GCFunction: - case GCForeground: - new_rrop = TRUE; - break; - case GCPlaneMask: - new_rrop = TRUE; - new_text = TRUE; - break; - case GCBackground: - break; - case GCLineStyle: - case GCLineWidth: - new_line = TRUE; - break; - case GCJoinStyle: - case GCCapStyle: - break; - case GCFillStyle: - new_text = TRUE; - new_fillspans = TRUE; - new_line = TRUE; - new_fillarea = TRUE; - break; - case GCFillRule: - break; - case GCTile: - new_fillspans = TRUE; - new_fillarea = TRUE; - break; - - case GCStipple: - if (pGC->stipple) { - int width = pGC->stipple->drawable.width; - PixmapPtr nstipple; - - if ((width <= PGSZ) && !(width & (width - 1)) && - (nstipple = cfbCopyPixmap(pGC->stipple))) { - cfbPadPixmap(nstipple); - (*pGC->pScreen->DestroyPixmap)(pGC->stipple); - pGC->stipple = nstipple; - } - } - new_fillspans = TRUE; - new_fillarea = TRUE; - break; - - case GCTileStipXOrigin: - new_rotate = TRUE; - break; - - case GCTileStipYOrigin: - new_rotate = TRUE; - break; - - case GCFont: - new_text = TRUE; - break; - case GCSubwindowMode: - break; - case GCGraphicsExposures: - break; - case GCClipXOrigin: - break; - case GCClipYOrigin: - break; - case GCClipMask: - break; - case GCDashOffset: - break; - case GCDashList: - break; - case GCArcMode: - break; - default: - break; - } - } - - /* - * If the drawable has changed, ensure suitable - * entries are in the proc vector. - */ - if (pDrawable->serialNumber != (pGC->serialNumber & (DRAWABLE_SERIAL_BITS))) { - new_fillspans = TRUE; /* deal with FillSpans later */ - } - - if (new_rotate || new_fillspans) { - Bool new_pix = FALSE; - - xrot = pGC->patOrg.x + pDrawable->x; - yrot = pGC->patOrg.y + pDrawable->y; - - LeoCheckFill (pGC, pDrawable); - - switch (pGC->fillStyle) { - case FillTiled: - if (!pGC->tileIsPixel) { - int width = pGC->tile.pixmap->drawable.width * PSZ; - - if ((width <= 32) && !(width & (width - 1))) { - cfbCopyRotatePixmap(pGC->tile.pixmap, - &pGC->pRotatedPixmap, - xrot, yrot); - new_pix = TRUE; - } - } - break; - } - - if (!new_pix && pGC->pRotatedPixmap) { - (*pGC->pScreen->DestroyPixmap)(pGC->pRotatedPixmap); - pGC->pRotatedPixmap = (PixmapPtr) NULL; - } - } - - if (new_rrop) { - int old_rrop; - - if (gcPriv->stipple) { - if (pGC->fillStyle == FillStippled) - gcPriv->stipple->alu = pGC->alu | 0x80; - else - gcPriv->stipple->alu = pGC->alu; - if (pGC->fillStyle != FillTiled) { - gcPriv->stipple->fg = pGC->fgPixel; - gcPriv->stipple->bg = pGC->bgPixel; - } - } - - old_rrop = devPriv->rop; - devPriv->rop = cfbReduceRasterOp (pGC->alu, pGC->fgPixel, - pGC->planemask, - &devPriv->and, &devPriv->xor); - if (old_rrop == devPriv->rop) - new_rrop = FALSE; - else { - new_line = TRUE; - new_text = TRUE; - new_fillspans = TRUE; - new_fillarea = TRUE; - } - } - - if (new_rrop || new_fillspans || new_text || new_fillarea || new_line) { - GCOps *newops; - - if ((newops = LeoMatchCommon (pGC, devPriv)) != NULL) { - if (pGC->ops->devPrivate.val) - miDestroyGCOps (pGC->ops); - pGC->ops = newops; - new_rrop = new_line = new_fillspans = new_text = new_fillarea = 0; - } else { - if (!pGC->ops->devPrivate.val) { - pGC->ops = miCreateGCOps (pGC->ops); - pGC->ops->devPrivate.val = 1; - } - pGC->ops->CopyArea = LeoCopyArea; - } - } - - /* deal with the changes we've collected */ - if (new_line) { - pGC->ops->FillPolygon = miFillPolygon; - if (devPriv->oneRect && pGC->fillStyle == FillSolid) { - switch (devPriv->rop) { - case GXcopy: - pGC->ops->FillPolygon = cfbFillPoly1RectCopy; - break; - default: - pGC->ops->FillPolygon = LeoFillPoly1RectGeneral; - break; - } - } - if (pGC->lineWidth == 0) { - if ((pGC->lineStyle == LineSolid) && (pGC->fillStyle == FillSolid)) { - switch (devPriv->rop) { - case GXcopy: - pGC->ops->PolyArc = cfbZeroPolyArcSS8Copy; - break; - default: - pGC->ops->PolyArc = LeoZeroPolyArcSS8General; - break; - } - } else - pGC->ops->PolyArc = miZeroPolyArc; - } else - pGC->ops->PolyArc = miPolyArc; - pGC->ops->PolySegment = miPolySegment; - switch (pGC->lineStyle) { - case LineSolid: - if(pGC->lineWidth == 0) { - if (pGC->fillStyle == FillSolid) { - if (devPriv->oneRect && - ((pDrawable->x >= pGC->pScreen->width - 32768) && - (pDrawable->y >= pGC->pScreen->height - 32768))) { - pGC->ops->Polylines = cfb8LineSS1Rect; - pGC->ops->PolySegment = cfb8SegmentSS1Rect; - } else { - pGC->ops->Polylines = cfbLineSS; - pGC->ops->PolySegment = cfbSegmentSS; - } - } else - pGC->ops->Polylines = miZeroLine; - } else - pGC->ops->Polylines = miWideLine; - break; - case LineOnOffDash: - case LineDoubleDash: - if (pGC->lineWidth == 0 && pGC->fillStyle == FillSolid) { - pGC->ops->Polylines = cfbLineSD; - pGC->ops->PolySegment = cfbSegmentSD; - } else - pGC->ops->Polylines = miWideDash; - break; - } - } - - if (new_text && pGC->font) { - if (FONTMAXBOUNDS(pGC->font,rightSideBearing) - - FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 || - FONTMINBOUNDS(pGC->font,characterWidth) < 0) { - pGC->ops->PolyGlyphBlt = miPolyGlyphBlt; - pGC->ops->ImageGlyphBlt = miImageGlyphBlt; - } else { - if (pGC->fillStyle == FillSolid) { - if (TERMINALFONT (pGC->font)) - pGC->ops->PolyGlyphBlt = LeoPolyTEGlyphBlt; - else - pGC->ops->PolyGlyphBlt = LeoPolyGlyphBlt; - } else - pGC->ops->PolyGlyphBlt = miPolyGlyphBlt; - - /* special case ImageGlyphBlt for terminal emulator fonts */ - if (TERMINALFONT (pGC->font)) - pGC->ops->ImageGlyphBlt = LeoTEGlyphBlt; - else - pGC->ops->ImageGlyphBlt = miImageGlyphBlt; - } - } - - if (new_fillspans) { - switch (pGC->fillStyle) { - case FillSolid: - pGC->ops->FillSpans = LeoFillSpansSolid; - break; - case FillTiled: - if (pGC->pRotatedPixmap) { - if (pGC->alu == GXcopy && (pGC->planemask & PMSK) == PMSK) - pGC->ops->FillSpans = cfbTile32FSCopy; - else - pGC->ops->FillSpans = LeoTile32FSGeneral; - } else - pGC->ops->FillSpans = cfbUnnaturalTileFS; - break; - case FillStippled: - pGC->ops->FillSpans = cfbUnnaturalStippleFS; - break; - case FillOpaqueStippled: - pGC->ops->FillSpans = cfbUnnaturalStippleFS; - break; - default: - FatalError("LeoValidateGC: illegal fillStyle\n"); - } - if (gcPriv->stipple) - pGC->ops->FillSpans = LeoFillSpansStippled; - } /* end of new_fillspans */ - - if (new_fillarea) { - pGC->ops->PolyFillRect = miPolyFillRect; - if (pGC->fillStyle == FillSolid) { - if (devPriv->oneRect) - pGC->ops->PolyFillRect = LeoPolyFillRect1Rect; - else - pGC->ops->PolyFillRect = LeoPolyFillRect; - } else if (gcPriv->stipple) - pGC->ops->PolyFillRect = LeoPolyFillStippledRect; - else if (pGC->fillStyle == FillTiled) - pGC->ops->PolyFillRect = cfbPolyFillRect; - pGC->ops->PolyFillArc = miPolyFillArc; - if (pGC->fillStyle == FillSolid) { - switch (devPriv->rop) { - case GXcopy: - pGC->ops->PolyFillArc = cfbPolyFillArcSolidCopy; - break; - default: - pGC->ops->PolyFillArc = LeoPolyFillArcSolidGeneral; - break; - } - } - } -} Index: leo_gc.h =================================================================== RCS file: leo_gc.h diff -N leo_gc.h --- leo_gc.h 23 Apr 2004 19:48:50 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,81 +0,0 @@ -/* - * Acceleration for the Leo (ZX) framebuffer - Accel func declarations. - * - * Copyright (C) 1999 Jakub Jelinek (jakub@redhat.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * JAKUB JELINEK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ -/* $XFree86$ */ - -#ifndef LEOGC_H -#define LEOGC_H - -extern RegionPtr LeoCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, - GCPtr pGC, int srcx, int srcy, int width, int height, - int dstx, int dsty); - -extern RegionPtr LeoCopyPlane(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, - GCPtr pGC, int srcx, int srcy, int width, int height, - int dstx, int dsty, unsigned long bitPlane); - -extern void LeoFillBoxSolid (DrawablePtr pDrawable, int nBox, - BoxPtr pBox, unsigned long pixel); - -extern void LeoPolyFillRect(DrawablePtr pDrawable, GCPtr pGC, - int nrectFill, xRectangle *prectInit); - -extern void LeoPolyFillRect1Rect(DrawablePtr pDrawable, register GCPtr pGC, - int nrectFill, xRectangle *prectInit); - -extern void LeoPolyFillStippledRect(DrawablePtr pDrawable, GCPtr pGC, - int nrectFill, xRectangle *prectInit); - -extern void LeoFillSpansSolid (DrawablePtr pDrawable, GCPtr pGC, - int n, DDXPointPtr ppt, - int *pwidth, int fSorted); - -extern void LeoFillSpansStippled (DrawablePtr pDrawable, GCPtr pGC, - int n, DDXPointPtr ppt, - int *pwidth, int fSorted); - -extern void LeoPolyGlyphBlt (DrawablePtr pDrawable, GCPtr pGC, int x, int y, - unsigned int nglyph, CharInfoPtr *ppci, pointer pGlyphBase); - -extern void LeoTEGlyphBlt (DrawablePtr pDrawable, GCPtr pGC, int x, int y, - unsigned int nglyph, CharInfoPtr *ppci, pointer pGlyphBase); - -extern void LeoPolyTEGlyphBlt (DrawablePtr pDrawable, GCPtr pGC, int x, int y, - unsigned int nglyph, CharInfoPtr *ppci, pointer pGlyphBase); - -extern void LeoFillPoly1RectGeneral(DrawablePtr pDrawable, GCPtr pGC, int shape, - int mode, int count, DDXPointPtr ptsIn); - -extern void LeoZeroPolyArcSS8General(DrawablePtr pDraw, GCPtr pGC, int narcs, xArc *parcs); - -extern void LeoTile32FSGeneral(DrawablePtr pDrawable, GCPtr pGC, int nInit, - DDXPointPtr pptInit, int *pwidthInit, int fSorted); - -extern void LeoPolyFillArcSolidGeneral(DrawablePtr pDrawable, GCPtr pGC, - int narcs, xArc *parcs); - -extern int LeoCheckFill (GCPtr pGC, DrawablePtr pDrawable); - -extern void LeoDoBitblt (DrawablePtr pSrc, DrawablePtr pDst, int alu, RegionPtr prgnDst, - DDXPointPtr pptSrc, unsigned long planemask); - -#endif /* LEOGC_H */ Index: leo_glyph.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/drivers/sunleo/leo_glyph.c,v retrieving revision 1.2 diff -u -r1.2 leo_glyph.c --- leo_glyph.c 23 Apr 2004 19:48:50 -0000 1.2 +++ leo_glyph.c 28 Sep 2004 22:56:45 -0000 @@ -31,7 +31,7 @@ #include "fontstruct.h" #include "dixfontstr.h" -#include "cfb.h" +#include "fb.h" #include "mi.h" void @@ -51,7 +51,7 @@ unsigned char *fb; int height, width; - clip = cfbGetCompositeClip(pGC); + clip = fbGetCompositeClip(pGC); /* compute an approximate (but covering) bounding box */ box.x1 = 0; if (ppci[0]->metrics.leftSideBearing < 0) @@ -76,7 +76,7 @@ ld0->vclipmax = ((clip->extents.y2 - 1) << 16) | (clip->extents.x2 - 1); break; } - cfbPolyGlyphBlt8 (pDrawable, pGC, x, y, nglyph, ppci, pGlyphBase); + fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pGlyphBase); case rgnOUT: return; default: @@ -178,7 +178,7 @@ widthGlyph = FONTMAXBOUNDS(pfont,characterWidth); h = FONTASCENT(pfont) + FONTDESCENT(pfont); - clip = cfbGetCompositeClip(pGC); + clip = fbGetCompositeClip(pGC); bbox.x1 = x + pDrawable->x; bbox.x2 = bbox.x1 + (widthGlyph * nglyph); bbox.y1 = y + pDrawable->y - FONTASCENT(pfont); @@ -205,7 +205,7 @@ x -= pDrawable->x; y = y - pDrawable->y + FONTASCENT(pfont); if (pGlyphBase) - cfbPolyGlyphBlt8 (pDrawable, pGC, x, y, nglyph, ppci, NULL); + fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, NULL); else miImageGlyphBlt(pDrawable, pGC, x, y, nglyph, ppci, pGlyphBase); case rgnOUT: Index: leo_stubs.c =================================================================== RCS file: leo_stubs.c diff -N leo_stubs.c --- leo_stubs.c 23 Apr 2004 19:48:50 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,104 +0,0 @@ -/* - * Acceleration for the Leo (ZX) framebuffer - Unaccelerated stuff. - * - * Copyright (C) 1999 Jakub Jelinek (jakub@redhat.com) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * JAKUB JELINEK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ -/* $XFree86$ */ - -#define PSZ 32 - -#include "leo.h" - -#include "pixmapstr.h" -#include "scrnintstr.h" - -#include "cfb.h" - -void -LeoFillPoly1RectGeneral(DrawablePtr pDrawable, GCPtr pGC, int shape, - int mode, int count, DDXPointPtr ptsIn) -{ - LeoPtr pLeo = LeoGetScreenPrivate (pDrawable->pScreen); - LeoDraw *ld0 = pLeo->ld0; - - if (pGC->alu != GXcopy) - ld0->rop = leoRopTable[pGC->alu]; - if (pGC->planemask != 0xffffff) - ld0->planemask = pGC->planemask; - cfbFillPoly1RectCopy(pDrawable, pGC, shape, mode, count, ptsIn); - if (pGC->alu != GXcopy) - ld0->rop = LEO_ATTR_RGBE_ENABLE|LEO_ROP_NEW; - if (pGC->planemask != 0xffffff) - ld0->planemask = 0xffffff; -} - -void -LeoZeroPolyArcSS8General(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc *parcs) -{ - LeoPtr pLeo = LeoGetScreenPrivate (pDrawable->pScreen); - LeoDraw *ld0 = pLeo->ld0; - - if (pGC->alu != GXcopy) - ld0->rop = leoRopTable[pGC->alu]; - if (pGC->planemask != 0xffffff) - ld0->planemask = pGC->planemask; - cfbZeroPolyArcSS8Copy(pDrawable, pGC, narcs, parcs); - if (pGC->alu != GXcopy) - ld0->rop = LEO_ATTR_RGBE_ENABLE|LEO_ROP_NEW; - if (pGC->planemask != 0xffffff) - ld0->planemask = 0xffffff; -} - -void -LeoTile32FSGeneral(DrawablePtr pDrawable, GCPtr pGC, int nInit, - DDXPointPtr pptInit, int *pwidthInit, int fSorted) -{ - LeoPtr pLeo = LeoGetScreenPrivate (pDrawable->pScreen); - LeoDraw *ld0 = pLeo->ld0; - - if (pGC->alu != GXcopy) - ld0->rop = leoRopTable[pGC->alu]; - if (pGC->planemask != 0xffffff) - ld0->planemask = pGC->planemask; - cfbTile32FSCopy(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted); - if (pGC->alu != GXcopy) - ld0->rop = LEO_ATTR_RGBE_ENABLE|LEO_ROP_NEW; - if (pGC->planemask != 0xffffff) - ld0->planemask = 0xffffff; -} - -void -LeoPolyFillArcSolidGeneral(DrawablePtr pDrawable, GCPtr pGC, - int narcs, xArc *parcs) -{ - LeoPtr pLeo = LeoGetScreenPrivate (pDrawable->pScreen); - LeoDraw *ld0 = pLeo->ld0; - - if (pGC->alu != GXcopy) - ld0->rop = leoRopTable[pGC->alu]; - if (pGC->planemask != 0xffffff) - ld0->planemask = pGC->planemask; - cfbPolyFillArcSolidCopy(pDrawable, pGC, narcs, parcs); - if (pGC->alu != GXcopy) - ld0->rop = LEO_ATTR_RGBE_ENABLE|LEO_ROP_NEW; - if (pGC->planemask != 0xffffff) - ld0->planemask = 0xffffff; -}