From: Søren Sandmann Pedersen <[email protected]> It is not used anywhere else.
Signed-off-by: Soren Sandmann <[email protected]> --- fb/fbpict.c | 47 +++++++++++++- fb/fbpict.h | 7 ++ render/Makefile.am | 1 - render/mipict.c | 2 +- render/mipict.h | 7 -- render/mirect.c | 185 ---------------------------------------------------- 6 files changed, 54 insertions(+), 195 deletions(-) delete mode 100644 render/mirect.c diff --git a/fb/fbpict.c b/fb/fbpict.c index 133f422..6b7c920 100644 --- a/fb/fbpict.c +++ b/fb/fbpict.c @@ -34,6 +34,7 @@ #include "picturestr.h" #include "mipict.h" #include "fbpict.h" +#include "damage.h" void fbComposite (CARD8 op, @@ -76,6 +77,50 @@ fbComposite (CARD8 op, free_pixman_pict (pDst, dest); } +void +fbCompositeRects (CARD8 op, + PicturePtr pDst, + xRenderColor *color, + int nRect, + xRectangle *rects) +{ + RegionPtr damage; + pixman_image_t *image; + int dst_xoff, dst_yoff; + int i; + + damage = RegionFromRects (nRect, rects, CT_UNSORTED); + RegionIntersect (damage, damage, pDst->pCompositeClip); + + if (RegionBroken (damage)) + return; + + DamageRegionAppend (pDst->pDrawable, damage); + + image = image_from_pict (pDst, TRUE, &dst_xoff, &dst_yoff); + + for (i = 0; i < nRect; ++i) + { + rects[i].x += dst_xoff; + rects[i].y += dst_yoff; + } + + pixman_image_fill_rectangles ( + op, image, (pixman_color_t *)color, nRect, + (const pixman_rectangle16_t *)rects); + + for (i = 0; i < nRect; ++i) + { + rects[i].x -= dst_xoff; + rects[i].y -= dst_yoff; + } + + free_pixman_pict (pDst, image); + + DamageRegionProcessPending (pDst->pDrawable); + RegionDestroy (damage); +} + static pixman_image_t * create_solid_fill_image (PicturePtr pict) { @@ -362,7 +407,7 @@ fbPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats) ps = GetPictureScreen(pScreen); ps->Composite = fbComposite; ps->Glyphs = miGlyphs; - ps->CompositeRects = miCompositeRects; + ps->CompositeRects = fbCompositeRects; ps->RasterizeTrapezoid = fbRasterizeTrapezoid; ps->Trapezoids = fbTrapezoids; ps->AddTraps = fbAddTraps; diff --git a/fb/fbpict.h b/fb/fbpict.h index b880ebb..76c4d44 100644 --- a/fb/fbpict.h +++ b/fb/fbpict.h @@ -43,6 +43,13 @@ fbComposite (CARD8 op, CARD16 width, CARD16 height); +extern _X_EXPORT void +fbCompositeRects (CARD8 op, + PicturePtr pDst, + xRenderColor *color, + int nRect, + xRectangle *rects); + /* fbtrap.c */ extern _X_EXPORT void diff --git a/render/Makefile.am b/render/Makefile.am index d02028b..80c3cb7 100644 --- a/render/Makefile.am +++ b/render/Makefile.am @@ -9,7 +9,6 @@ librender_la_SOURCES = \ matrix.c \ miindex.c \ mipict.c \ - mirect.c \ mitrap.c \ mitri.c \ picture.c \ diff --git a/render/mipict.c b/render/mipict.c index 9decd39..fefca84 100644 --- a/render/mipict.c +++ b/render/mipict.c @@ -598,7 +598,7 @@ miPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats) /* MI rendering routines */ ps->Composite = 0; /* requires DDX support */ ps->Glyphs = miGlyphs; - ps->CompositeRects = miCompositeRects; + ps->CompositeRects = 0; ps->Trapezoids = 0; ps->Triangles = 0; diff --git a/render/mipict.h b/render/mipict.h index f6d9dee..0767b62 100644 --- a/render/mipict.h +++ b/render/mipict.h @@ -133,13 +133,6 @@ extern _X_EXPORT Bool miIsSolidAlpha (PicturePtr pSrc); extern _X_EXPORT void -miCompositeRects (CARD8 op, - PicturePtr pDst, - xRenderColor *color, - int nRect, - xRectangle *rects); - -extern _X_EXPORT void miTrapezoidBounds (int ntrap, xTrapezoid *traps, BoxPtr box); extern _X_EXPORT void diff --git a/render/mirect.c b/render/mirect.c deleted file mode 100644 index 1f8fd2c..0000000 --- a/render/mirect.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * - * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Keith Packard not be used in - * advertising or publicity pertaining to distribution of the software without - * specific, written prior permission. Keith Packard makes no - * representations about the suitability of this software for any purpose. It - * is provided "as is" without express or implied warranty. - * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#endif - -#include "scrnintstr.h" -#include "gcstruct.h" -#include "pixmapstr.h" -#include "windowstr.h" -#include "mi.h" -#include "picturestr.h" -#include "mipict.h" - -static void -miColorRects (PicturePtr pDst, - PicturePtr pClipPict, - xRenderColor *color, - int nRect, - xRectangle *rects, - int xoff, - int yoff) -{ - CARD32 pixel; - GCPtr pGC; - ChangeGCVal tmpval[5]; - RegionPtr pClip; - unsigned long mask; - - miRenderColorToPixel (pDst->pFormat, color, &pixel); - - pGC = GetScratchGC (pDst->pDrawable->depth, pDst->pDrawable->pScreen); - if (!pGC) - return; - tmpval[0].val = GXcopy; - tmpval[1].val = pixel; - tmpval[2].val = pDst->subWindowMode; - mask = GCFunction | GCForeground | GCSubwindowMode; - if (pClipPict->clientClipType == CT_REGION) - { - tmpval[3].val = pDst->clipOrigin.x - xoff; - tmpval[4].val = pDst->clipOrigin.y - yoff; - mask |= GCClipXOrigin|GCClipYOrigin; - - pClip = RegionCreate(NULL); - RegionCopy(pClip, - (RegionPtr) pClipPict->clientClip); - (*pGC->funcs->ChangeClip) (pGC, CT_REGION, pClip, 0); - } - - ChangeGC (NullClient, pGC, mask, tmpval); - ValidateGC (pDst->pDrawable, pGC); - if (xoff || yoff) - { - int i; - for (i = 0; i < nRect; i++) - { - rects[i].x -= xoff; - rects[i].y -= yoff; - } - } - (*pGC->ops->PolyFillRect) (pDst->pDrawable, pGC, nRect, rects); - if (xoff || yoff) - { - int i; - for (i = 0; i < nRect; i++) - { - rects[i].x += xoff; - rects[i].y += yoff; - } - } - FreeScratchGC (pGC); -} - -void -miCompositeRects (CARD8 op, - PicturePtr pDst, - xRenderColor *color, - int nRect, - xRectangle *rects) -{ - ScreenPtr pScreen = pDst->pDrawable->pScreen; - - if (color->alpha == 0xffff) - { - if (op == PictOpOver) - op = PictOpSrc; - } - if (op == PictOpClear) - color->red = color->green = color->blue = color->alpha = 0; - - if (op == PictOpSrc || op == PictOpClear) - { - miColorRects (pDst, pDst, color, nRect, rects, 0, 0); - if (pDst->alphaMap) - miColorRects (pDst->alphaMap, pDst, - color, nRect, rects, - pDst->alphaOrigin.x, - pDst->alphaOrigin.y); - } - else - { - PictFormatPtr rgbaFormat; - PixmapPtr pPixmap; - PicturePtr pSrc; - xRectangle one; - int error; - Pixel pixel; - GCPtr pGC; - ChangeGCVal gcvals[2]; - XID tmpval[1]; - - rgbaFormat = PictureMatchFormat (pScreen, 32, PICT_a8r8g8b8); - if (!rgbaFormat) - goto bail1; - - pPixmap = (*pScreen->CreatePixmap) (pScreen, 1, 1, rgbaFormat->depth, - CREATE_PIXMAP_USAGE_SCRATCH); - if (!pPixmap) - goto bail2; - - miRenderColorToPixel (rgbaFormat, color, &pixel); - - pGC = GetScratchGC (rgbaFormat->depth, pScreen); - if (!pGC) - goto bail3; - gcvals[0].val = GXcopy; - gcvals[1].val = pixel; - - ChangeGC (NullClient, pGC, GCFunction | GCForeground, gcvals); - ValidateGC (&pPixmap->drawable, pGC); - one.x = 0; - one.y = 0; - one.width = 1; - one.height = 1; - (*pGC->ops->PolyFillRect) (&pPixmap->drawable, pGC, 1, &one); - - tmpval[0] = xTrue; - pSrc = CreatePicture (0, &pPixmap->drawable, rgbaFormat, - CPRepeat, tmpval, serverClient, &error); - - if (!pSrc) - goto bail4; - - while (nRect--) - { - CompositePicture (op, pSrc, 0, pDst, 0, 0, 0, 0, - rects->x, - rects->y, - rects->width, - rects->height); - rects++; - } - - FreePicture ((pointer) pSrc, 0); -bail4: - FreeScratchGC (pGC); -bail3: - (*pScreen->DestroyPixmap) (pPixmap); -bail2: -bail1: - ; - } -} -- 1.7.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
