[xserver-commit] xserver/render mipict.c,1.18,1.19
Keith Packard
xserver-commit@pdx.freedesktop.org
Mon, 01 Dec 2003 17:59:40 -0800
- Previous message: [xserver-commit] xserver/hw/kdrive/chips .cvsignore,NONE,1.1 Makefile.am,NONE,1.1 chips.c,1.3,1.4 chipsdraw.c,1.3,1.4 Imakefile,1.2,NONE
- Next message: [xserver-commit] xserver ChangeLog,3.75,3.76
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Committed by: keithp
Update of /cvs/xserver/xserver/render
In directory pdx:/tmp/cvs-serv28394/render
Modified Files:
mipict.c
Log Message:
* composite/compinit.c: (compCloseScreen), (compScreenInit):
* composite/compint.h:
* composite/compwindow.c: (compPositionWindow), (compClipNotify),
(compWindowUpdateAutomatic):
Wrap ClipNotify to see region motions during MoveWindow.
Check window reorigin in PositionWindow and bump pixmap
serial numbers to revalidate GCs.
Fix picture clip region origin in automatic update
* damageext/damageext.c: (DamageClientCallback):
Initialize client private 'critical' value
* fb/fbpixmap.c: (fbValidateBits), (fbValidateDrawable):
* fb/fbscreen.c: (fbFinishScreenInit):
Clean up pixmap bounds checking code to only affect
contents allocated by fb.
* render/mipict.c: (miCompositeSourceValidate),
(miComputeCompositeRegion):
Oops. Call SourceValidate for Composite operations.
* configure.ac:
* hw/kdrive/Makefile.am:
* hw/kdrive/chips/.cvsignore:
* hw/kdrive/chips/Imakefile:
* hw/kdrive/chips/Makefile.am:
* hw/kdrive/chips/chips.c: (chipsRandRSetConfig), (chipsRandRInit),
(chipsFinishInitScreen), (chipsCreateResources):
* hw/kdrive/chips/chipsdraw.c: (chipsWaitIdle),
(chipsPrepareSolid), (chipsPrepareCopy), (chipsDrawInit),
(chipsDrawEnable):
Add Xchips server (vesa based)
Index: mipict.c
===================================================================
RCS file: /cvs/xserver/xserver/render/mipict.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- mipict.c 22 Nov 2003 00:49:11 -0000 1.18
+++ mipict.c 2 Dec 2003 01:59:38 -0000 1.19
@@ -325,6 +325,58 @@
}
}
+static void
+miCompositeSourceValidate (PicturePtr pPicture,
+ INT16 x,
+ INT16 y,
+ CARD16 width,
+ CARD16 height)
+{
+ DrawablePtr pDrawable = pPicture->pDrawable;
+ ScreenPtr pScreen = pDrawable->pScreen;
+
+ if (pScreen->SourceValidate)
+ {
+ x -= pPicture->pDrawable->x;
+ y -= pPicture->pDrawable->y;
+ if (pPicture->transform)
+ {
+ xPoint points[4];
+ int i;
+ int xmin, ymin, xmax, ymax;
+
+#define VectorSet(i,_x,_y) { points[i].x = _x; points[i].y = _y; }
+ VectorSet (0, x, y);
+ VectorSet (1, x + width, y);
+ VectorSet (2, x, y + height);
+ VectorSet (3, x + width, y + height);
+ xmin = ymin = 32767;
+ xmax = ymax = -32737;
+ for (i = 0; i < 4; i++)
+ {
+ PictVector t;
+ t.vector[0] = IntToxFixed (points[i].x);
+ t.vector[1] = IntToxFixed (points[i].y);
+ t.vector[2] = xFixed1;
+ if (PictureTransformPoint (pPicture->transform, &t))
+ {
+ int tx = xFixedToInt (t.vector[0]);
+ int ty = xFixedToInt (t.vector[1]);
+ if (tx < xmin) xmin = tx;
+ if (tx > xmax) xmax = tx;
+ if (ty < ymin) ymin = ty;
+ if (ty > ymax) ymax = ty;
+ }
+ }
+ x = xmin;
+ y = ymin;
+ width = xmax - xmin;
+ height = ymax - ymin;
+ }
+ (*pScreen->SourceValidate) (pDrawable, x, y, width, height);
+ }
+}
+
/*
* returns FALSE if the final region is empty. Indistinguishable from
* an allocation failure, but rendering ignores those anyways.
@@ -411,6 +463,9 @@
}
}
}
+ miCompositeSourceValidate (pSrc, xSrc, ySrc, width, height);
+ if (pMask)
+ miCompositeSourceValidate (pMask, xMask, yMask, width, height);
return TRUE;
}
- Previous message: [xserver-commit] xserver/hw/kdrive/chips .cvsignore,NONE,1.1 Makefile.am,NONE,1.1 chips.c,1.3,1.4 chipsdraw.c,1.3,1.4 Imakefile,1.2,NONE
- Next message: [xserver-commit] xserver ChangeLog,3.75,3.76
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]