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

Reply via email to