Importing vendor version xf86-012804-2330 on Thu Jan 29 00:06:33 PST 2004

This commit is contained in:
Egbert Eich 2004-01-29 08:08:57 +00:00
commit 3c64b65d80
39 changed files with 765 additions and 256 deletions

View file

@ -21,7 +21,7 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/* $XFree86: xc/programs/Xserver/fb/fbcopy.c,v 1.13 2003/11/10 18:21:47 tsi Exp $ */
/* $XFree86: xc/programs/Xserver/fb/fbcopy.c,v 1.14 2003/12/28 17:22:25 alanh Exp $ */
#include "fb.h"
#ifdef IN_MODULE
@ -398,7 +398,10 @@ fbDoCopy (DrawablePtr pSrcDrawable,
int dx;
int dy;
int numRects;
BoxRec box;
int box_x1;
int box_y1;
int box_x2;
int box_y2;
Bool fastSrc = FALSE; /* for fast clipping with pixmap source */
Bool fastDst = FALSE; /* for fast clipping with one rect dest */
Bool fastExpose = FALSE; /* for fast exposures with pixmap source */
@ -466,10 +469,10 @@ fbDoCopy (DrawablePtr pSrcDrawable,
xOut += pDstDrawable->x;
yOut += pDstDrawable->y;
box.x1 = xIn;
box.y1 = yIn;
box.x2 = xIn + widthSrc;
box.y2 = yIn + heightSrc;
box_x1 = xIn;
box_y1 = yIn;
box_x2 = xIn + widthSrc;
box_y2 = yIn + heightSrc;
dx = xIn - xOut;
dy = yIn - yOut;
@ -484,32 +487,32 @@ fbDoCopy (DrawablePtr pSrcDrawable,
* clip the source; if regions extend beyond the source size,
* make sure exposure events get sent
*/
if (box.x1 < pSrcDrawable->x)
if (box_x1 < pSrcDrawable->x)
{
box.x1 = pSrcDrawable->x;
box_x1 = pSrcDrawable->x;
fastExpose = FALSE;
}
if (box.y1 < pSrcDrawable->y)
if (box_y1 < pSrcDrawable->y)
{
box.y1 = pSrcDrawable->y;
box_y1 = pSrcDrawable->y;
fastExpose = FALSE;
}
if (box.x2 > pSrcDrawable->x + (int) pSrcDrawable->width)
if (box_x2 > pSrcDrawable->x + (int) pSrcDrawable->width)
{
box.x2 = pSrcDrawable->x + (int) pSrcDrawable->width;
box_x2 = pSrcDrawable->x + (int) pSrcDrawable->width;
fastExpose = FALSE;
}
if (box.y2 > pSrcDrawable->y + (int) pSrcDrawable->height)
if (box_y2 > pSrcDrawable->y + (int) pSrcDrawable->height)
{
box.y2 = pSrcDrawable->y + (int) pSrcDrawable->height;
box_y2 = pSrcDrawable->y + (int) pSrcDrawable->height;
fastExpose = FALSE;
}
/* Translate and clip the dst to the destination composite clip */
box.x1 -= dx;
box.x2 -= dx;
box.y1 -= dy;
box.y2 -= dy;
box_x1 -= dx;
box_x2 -= dx;
box_y1 -= dy;
box_y2 -= dy;
/* If the destination composite clip is one rectangle we can
do the clip directly. Otherwise we have to create a full
@ -520,21 +523,26 @@ fbDoCopy (DrawablePtr pSrcDrawable,
{
BoxPtr pBox = REGION_RECTS(cclip);
if (box.x1 < pBox->x1) box.x1 = pBox->x1;
if (box.x2 > pBox->x2) box.x2 = pBox->x2;
if (box.y1 < pBox->y1) box.y1 = pBox->y1;
if (box.y2 > pBox->y2) box.y2 = pBox->y2;
if (box_x1 < pBox->x1) box_x1 = pBox->x1;
if (box_x2 > pBox->x2) box_x2 = pBox->x2;
if (box_y1 < pBox->y1) box_y1 = pBox->y1;
if (box_y2 > pBox->y2) box_y2 = pBox->y2;
fastDst = TRUE;
}
}
/* Check to see if the region is empty */
if (box.x1 >= box.x2 || box.y1 >= box.y2)
if (box_x1 >= box_x2 || box_y1 >= box_y2)
{
REGION_NULL(pGC->pScreen, &rgnDst);
}
else
{
BoxRec box;
box.x1 = box_x1;
box.y1 = box_y1;
box.x2 = box_x2;
box.y2 = box_y2;
REGION_INIT(pGC->pScreen, &rgnDst, &box, 1);
}