diff options
Diffstat (limited to 'xorg-server/mi')
-rw-r--r-- | xorg-server/mi/makefile | 39 | ||||
-rw-r--r-- | xorg-server/mi/miarc.c | 4 | ||||
-rw-r--r-- | xorg-server/mi/micmap.c | 15 | ||||
-rw-r--r-- | xorg-server/mi/micoord.h | 8 | ||||
-rw-r--r-- | xorg-server/mi/miexpose.c | 10 | ||||
-rw-r--r-- | xorg-server/mi/miinitext.c | 12 | ||||
-rw-r--r-- | xorg-server/mi/mioverlay.c | 4 | ||||
-rw-r--r-- | xorg-server/mi/misprite.c | 13 | ||||
-rw-r--r-- | xorg-server/mi/mivaltree.c | 16 | ||||
-rw-r--r-- | xorg-server/mi/miwideline.c | 4 | ||||
-rw-r--r-- | xorg-server/mi/miwindow.c | 2 |
11 files changed, 104 insertions, 23 deletions
diff --git a/xorg-server/mi/makefile b/xorg-server/mi/makefile new file mode 100644 index 000000000..7067c62e8 --- /dev/null +++ b/xorg-server/mi/makefile @@ -0,0 +1,39 @@ +CSRCS=miarc.c \ + mibitblt.c \ + micmap.c \ + micopy.c \ + micursor.c \ + midash.c \ + midispcur.c \ + mieq.c \ + miexpose.c \ + mifillarc.c \ + mifillrct.c \ + mifpolycon.c \ + migc.c \ + miglblt.c \ + mioverlay.c \ + mipointer.c \ + mipoly.c \ + mipolycon.c \ + mipolygen.c \ + mipolypnt.c \ + mipolyrect.c \ + mipolyseg.c \ + mipolytext.c \ + mipolyutil.c \ + mipushpxl.c \ + miscrinit.c \ + mispans.c \ + misprite.c \ + mivaltree.c \ + miwideline.c \ + miwindow.c \ + mizerarc.c \ + mizerclip.c \ + mizerline.c \ + miinitext.c + +LIBRARY=libmi + + diff --git a/xorg-server/mi/miarc.c b/xorg-server/mi/miarc.c index 0f6448bc1..a73bce9e6 100644 --- a/xorg-server/mi/miarc.c +++ b/xorg-server/mi/miarc.c @@ -63,6 +63,10 @@ SOFTWARE. #include "mifillarc.h" #include <X11/Xfuncproto.h> +#ifdef _MSC_VER +#define hypot _hypot +#endif + static double miDsin(double a); static double miDcos(double a); static double miDasin(double v); diff --git a/xorg-server/mi/micmap.c b/xorg-server/mi/micmap.c index 3ef0c8c70..90ca85d67 100644 --- a/xorg-server/mi/micmap.c +++ b/xorg-server/mi/micmap.c @@ -118,17 +118,26 @@ miInitializeColormap(ColormapPtr pmap) unsigned limr, limg, limb; limr = pVisual->redMask >> pVisual->offsetRed; - limg = pVisual->greenMask >> pVisual->offsetGreen; - limb = pVisual->blueMask >> pVisual->offsetBlue; - for (i = 0; i <= maxent; i++) { + for(i = 0; i <= min(limr,maxent); i++) { /* rescale to [0..65535] then rgb bits */ pmap->red[i].co.local.red = ((((i * 65535) / limr) >> shift) * 65535) / lim; + } + for(; i <= maxent; i++) pmap->red[i].co.local.red = 65535; + limg = pVisual->greenMask >> pVisual->offsetGreen; + for(i = 0; i <= min(limg,maxent); i++) { + /* rescale to [0..65535] then rgb bits */ pmap->green[i].co.local.green = ((((i * 65535) / limg) >> shift) * 65535) / lim; + } + for(; i <= maxent; i++) pmap->green[i].co.local.green = 65535; + limb = pVisual->blueMask >> pVisual->offsetBlue; + for(i = 0; i <= min(limb,maxent); i++) { + /* rescale to [0..65535] then rgb bits */ pmap->blue[i].co.local.blue = ((((i * 65535) / limb) >> shift) * 65535) / lim; } + for(; i <= maxent; i++) pmap->blue[i].co.local.blue = 65535; } else if (pVisual->class == StaticColor) { unsigned limr, limg, limb; diff --git a/xorg-server/mi/micoord.h b/xorg-server/mi/micoord.h index 481e418c5..c6fa41d53 100644 --- a/xorg-server/mi/micoord.h +++ b/xorg-server/mi/micoord.h @@ -55,14 +55,14 @@ #endif #if IMAGE_BYTE_ORDER == MSBFirst -#define intToCoord(i,x,y) (((x) = GetHighWord(i)), ((y) = (int) ((short) (i)))) +#define intToCoord(i,x,y) (((x) = GetHighWord(i)), ((y) = (int) ((short) ((i)&0xffff)))) #define coordToInt(x,y) (((x) << 16) | ((y) & 0xffff)) #define intToX(i) (GetHighWord(i)) -#define intToY(i) ((int) ((short) i)) +#define intToY(i) ((int) ((short) ((i)&0xffff))) #else -#define intToCoord(i,x,y) (((x) = (int) ((short) (i))), ((y) = GetHighWord(i))) +#define intToCoord(i,x,y) (((x) = (int) ((short) ((i)&0xffff))), ((y) = GetHighWord(i))) #define coordToInt(x,y) (((y) << 16) | ((x) & 0xffff)) -#define intToX(i) ((int) ((short) (i))) +#define intToX(i) ((int) ((short) ((i)&0xffff))) #define intToY(i) (GetHighWord(i)) #endif diff --git a/xorg-server/mi/miexpose.c b/xorg-server/mi/miexpose.c index 8b7c93fb8..791687245 100644 --- a/xorg-server/mi/miexpose.c +++ b/xorg-server/mi/miexpose.c @@ -349,11 +349,11 @@ miSendGraphicsExpose(ClientPtr client, RegionPtr pRgn, XID drawable, free(pEvent); } else { - xEvent event = { - .u.noExposure.drawable = drawable, - .u.noExposure.majorEvent = major, - .u.noExposure.minorEvent = minor - }; + xEvent event; memset(&event, 0, sizeof(xEvent)); + event.u.noExposure.drawable = drawable; + event.u.noExposure.majorEvent = major; + event.u.noExposure.minorEvent = minor; + event.u.u.type = NoExpose; WriteEventsToClient(client, 1, &event); } diff --git a/xorg-server/mi/miinitext.c b/xorg-server/mi/miinitext.c index 86fc31c99..d95d0210f 100644 --- a/xorg-server/mi/miinitext.c +++ b/xorg-server/mi/miinitext.c @@ -112,6 +112,13 @@ SOFTWARE. #include "micmap.h" #include "globals.h" +#ifdef GLXEXT +typedef struct __GLXprovider __GLXprovider; +extern __GLXprovider __glXDRISWRastProvider; +extern void GlxPushProvider(__GLXprovider * impl); +extern void GlxExtensionInit(INITARGS); +#endif + /* The following is only a small first step towards run-time * configurable extensions. */ @@ -328,6 +335,11 @@ InitExtensions(int argc, char *argv[]) (ext->initFunc) (); } } +#ifdef GLXEXT + if (!noGlxExtension) + GlxExtensionInit(); + +#endif } static ExtensionModule * diff --git a/xorg-server/mi/mioverlay.c b/xorg-server/mi/mioverlay.c index 2bfd5e401..14cd14ccb 100644 --- a/xorg-server/mi/mioverlay.c +++ b/xorg-server/mi/mioverlay.c @@ -3,6 +3,10 @@ #include <dix-config.h> #endif +#ifdef CreateWindow +#undef CreateWindow +#endif + #include <X11/X.h> #include "scrnintstr.h" #include <X11/extensions/shapeproto.h> diff --git a/xorg-server/mi/misprite.c b/xorg-server/mi/misprite.c index 97bbf8ef5..3ef25e75f 100644 --- a/xorg-server/mi/misprite.c +++ b/xorg-server/mi/misprite.c @@ -474,7 +474,7 @@ miSpriteSourceValidate(DrawablePtr pDrawable, int x, int y, int width, for (pDev = inputInfo.devices; pDev; pDev = pDev->next) { if (DevHasCursor(pDev)) { pCursorInfo = MISPRITE(pDev); - if (pCursorInfo->isUp && pCursorInfo->pScreen == pScreen && + if (pCursorInfo && pCursorInfo->isUp && pCursorInfo->pScreen == pScreen && ORG_OVERLAP(&pCursorInfo->saved, pDrawable->x, pDrawable->y, x, y, width, height)) { SPRITE_DEBUG(("SourceValidate remove\n")); @@ -507,7 +507,7 @@ miSpriteCopyWindow(WindowPtr pWindow, DDXPointRec ptOldOrg, RegionPtr prgnSrc) /* * Damage will take care of destination check */ - if (pCursorInfo->isUp && pCursorInfo->pScreen == pScreen && + if (pCursorInfo && pCursorInfo->isUp && pCursorInfo->pScreen == pScreen && RegionContainsRect(prgnSrc, &pCursorInfo->saved) != rgnOUT) { SPRITE_DEBUG(("CopyWindow remove\n")); miSpriteRemoveCursor(pDev, pScreen); @@ -582,9 +582,12 @@ miSpriteInstallColormap(ColormapPtr pMap) for (pDev = inputInfo.devices; pDev; pDev = pDev->next) { if (DevHasCursor(pDev)) { pCursorInfo = MISPRITE(pDev); - pCursorInfo->checkPixels = TRUE; - if (pCursorInfo->isUp && pCursorInfo->pScreen == pScreen) - miSpriteRemoveCursor(pDev, pScreen); + if (pCursorInfo) + { + pCursorInfo->checkPixels = TRUE; + if (pCursorInfo->isUp && pCursorInfo->pScreen == pScreen) + miSpriteRemoveCursor(pDev, pScreen); + } } } diff --git a/xorg-server/mi/mivaltree.c b/xorg-server/mi/mivaltree.c index c1cc43122..88f9a4084 100644 --- a/xorg-server/mi/mivaltree.c +++ b/xorg-server/mi/mivaltree.c @@ -286,6 +286,9 @@ miComputeClips(WindowPtr pParent, eventMask | wOtherEventMasks(pParent)) & VisibilityChangeMask)) SendVisibilityNotify(pParent); + if (pParent->valdata==UnmapValData) + return; // return if no valid valdata + dx = pParent->drawable.x - pParent->valdata->before.oldAbsCorner.x; dy = pParent->drawable.y - pParent->valdata->before.oldAbsCorner.y; @@ -718,9 +721,11 @@ miValidateTree(WindowPtr pParent, /* Parent to validate */ RegionUninit(&childUnion); } - RegionNull(&pParent->valdata->after.exposed); - RegionNull(&pParent->valdata->after.borderExposed); - + if (pParent->valdata && pParent->valdata!=UnmapValData) + { + RegionNull(&pParent->valdata->after.exposed); + RegionNull(&pParent->valdata->after.borderExposed); + } /* * each case below is responsible for updating the * clipList and serial number for the parent window @@ -735,8 +740,9 @@ miValidateTree(WindowPtr pParent, /* Parent to validate */ * exposures and obscures as per miComputeClips and reset the parent's * clipList. */ - RegionSubtract(&pParent->valdata->after.exposed, - &totalClip, &pParent->clipList); + if (pParent->valdata && pParent->valdata!=UnmapValData) + RegionSubtract(&pParent->valdata->after.exposed, + &totalClip, &pParent->clipList); /* fall through */ case VTMap: RegionCopy(&pParent->clipList, &totalClip); diff --git a/xorg-server/mi/miwideline.c b/xorg-server/mi/miwideline.c index ca18f156e..242f3f8b0 100644 --- a/xorg-server/mi/miwideline.c +++ b/xorg-server/mi/miwideline.c @@ -45,6 +45,10 @@ from The Open Group. #include <math.h> #undef _XOPEN_SOURCE #endif +#ifdef _MSC_VER +#define hypot _hypot +#endif + #include <X11/X.h> #include "windowstr.h" #include "gcstruct.h" diff --git a/xorg-server/mi/miwindow.c b/xorg-server/mi/miwindow.c index 8dd99dbf0..e341b79de 100644 --- a/xorg-server/mi/miwindow.c +++ b/xorg-server/mi/miwindow.c @@ -216,7 +216,7 @@ miHandleValidateExposures(WindowPtr pWin) pChild = pWin; WindowExposures = pChild->drawable.pScreen->WindowExposures; while (1) { - if ((val = pChild->valdata)) { + if ( (val = pChild->valdata) && val!=UnmapValData) { if (RegionNotEmpty(&val->after.borderExposed)) miPaintWindow(pChild, &val->after.borderExposed, PW_BORDER); RegionUninit(&val->after.borderExposed); |