diff options
| author | Mihai Moldovan <ionic@ionic.de> | 2017-12-15 12:55:17 +0100 |
|---|---|---|
| committer | Mihai Moldovan <ionic@ionic.de> | 2017-12-15 12:55:17 +0100 |
| commit | 1dad092caf01d733990648e6df64cbf964df5143 (patch) | |
| tree | 39de0e643e76754a3e23ca9dd0350b8ba4f76250 /nx-X11/programs/Xserver/dbe/dbe.c | |
| parent | 6d70b9e3c47f27a166f4aacb522c5c1e49092dd9 (diff) | |
| parent | 2b9025f797ee322e21077e100c2ee27c2e7fa0e0 (diff) | |
| download | nx-libs-1dad092caf01d733990648e6df64cbf964df5143.tar.gz nx-libs-1dad092caf01d733990648e6df64cbf964df5143.tar.bz2 nx-libs-1dad092caf01d733990648e6df64cbf964df5143.zip | |
Merge branch '3.6.x'
Diffstat (limited to 'nx-X11/programs/Xserver/dbe/dbe.c')
| -rw-r--r-- | nx-X11/programs/Xserver/dbe/dbe.c | 207 |
1 files changed, 97 insertions, 110 deletions
diff --git a/nx-X11/programs/Xserver/dbe/dbe.c b/nx-X11/programs/Xserver/dbe/dbe.c index c0d6131b7..85a22219f 100644 --- a/nx-X11/programs/Xserver/dbe/dbe.c +++ b/nx-X11/programs/Xserver/dbe/dbe.c @@ -1,5 +1,3 @@ -/* $XdotOrg: xc/programs/Xserver/dbe/dbe.c,v 1.5 2005/07/03 07:01:17 daniels Exp $ */ -/* $Xorg: dbe.c,v 1.3 2000/08/17 19:48:16 cpqbld Exp $ */ /****************************************************************************** * * Copyright (c) 1994, 1995 Hewlett-Packard Company @@ -31,18 +29,18 @@ * DIX DBE code * *****************************************************************************/ -/* $XFree86: xc/programs/Xserver/dbe/dbe.c,v 3.10 2001/08/23 14:19:24 alanh Exp $ */ /* INCLUDES */ -#define NEED_EVENTS #ifdef HAVE_DIX_CONFIG_H #include <dix-config.h> #endif -#include <X11/X.h> -#include <X11/Xproto.h> +#include <string.h> + +#include <nx-X11/X.h> +#include <nx-X11/Xproto.h> #include "scrnintstr.h" #include "extnsionst.h" #include "gcstruct.h" @@ -51,10 +49,6 @@ #include "dbestruct.h" #include "midbe.h" -#ifdef XFree86LOADER -#include "xf86_ansic.h" -#endif - #if !defined(UINT32_MAX) #define UINT32_MAX 0xffffffffU #endif @@ -176,7 +170,7 @@ DbeAllocWinPriv(pScreen) register int i; pDbeScreenPriv = DBE_SCREEN_PRIV(pScreen); - pDbeWindowPriv = (DbeWindowPrivPtr)xalloc(pDbeScreenPriv->totalWinPrivSize); + pDbeWindowPriv = (DbeWindowPrivPtr)malloc(pDbeScreenPriv->totalWinPrivSize); if (pDbeWindowPriv) { @@ -188,11 +182,11 @@ DbeAllocWinPriv(pScreen) { if ((size = *sizes)) { - ppriv->ptr = (pointer)ptr; + ppriv->ptr = (void *)ptr; ptr += size; } else - ppriv->ptr = (pointer)NULL; + ppriv->ptr = (void *)NULL; } } @@ -268,7 +262,7 @@ DbeAllocWinPrivPriv(pScreen, index, amount) if (index >= pDbeScreenPriv->winPrivPrivLen) { unsigned *nsizes; - nsizes = (unsigned *)xrealloc(pDbeScreenPriv->winPrivPrivSizes, + nsizes = (unsigned *)realloc(pDbeScreenPriv->winPrivPrivSizes, (index + 1) * sizeof(unsigned)); if (!nsizes) { @@ -362,8 +356,6 @@ ProcDbeGetVersion(client) { /* REQUEST(xDbeGetVersionReq); */ xDbeGetVersionReply rep; - register int n; - REQUEST_SIZE_MATCH(xDbeGetVersionReq); @@ -375,10 +367,10 @@ ProcDbeGetVersion(client) if (client->swapped) { - swaps(&rep.sequenceNumber, n); + swaps(&rep.sequenceNumber); } - WriteToClient(client, sizeof(xDbeGetVersionReply), (char *)&rep); + WriteToClient(client, sizeof(xDbeGetVersionReply), &rep); return(client->noClientException); @@ -428,7 +420,7 @@ ProcDbeAllocateBackBufferName(client) /* The window must be valid. */ if (!(pWin = SecurityLookupWindow(stuff->window, client, - SecurityWriteAccess))) + DixWriteAccess))) { return(BadWindow); } @@ -476,7 +468,7 @@ ProcDbeAllocateBackBufferName(client) } /* Free what was allocated by the GetVisualInfo() call above. */ - xfree(scrVisInfo.visinfo); + free(scrVisInfo.visinfo); if (!visualMatched) { @@ -497,9 +489,9 @@ ProcDbeAllocateBackBufferName(client) /* Make the window priv a DBE window priv resource. */ if (!AddResource(stuff->buffer, dbeWindowPrivResType, - (pointer)pDbeWindowPriv)) + (void *)pDbeWindowPriv)) { - xfree(pDbeWindowPriv); + free(pDbeWindowPriv); return(BadAlloc); } @@ -524,7 +516,7 @@ ProcDbeAllocateBackBufferName(client) /* Actually connect the window priv to the window. */ - pWin->devPrivates[dbeWindowPrivIndex].ptr = (pointer)pDbeWindowPriv; + pWin->devPrivates[dbeWindowPrivIndex].ptr = (void *)pDbeWindowPriv; } /* if -- There is no buffer associated with the window. */ @@ -564,7 +556,7 @@ ProcDbeAllocateBackBufferName(client) } /* malloc/realloc a new array and initialize all elements to 0. */ - pDbeWindowPriv->IDs = (XID *)xrealloc(pIDs, + pDbeWindowPriv->IDs = (XID *)realloc(pIDs, (pDbeWindowPriv->maxAvailableIDs+DBE_INCR_MAX_IDS)*sizeof(XID)); if (!pDbeWindowPriv->IDs) { @@ -592,7 +584,7 @@ ProcDbeAllocateBackBufferName(client) /* Associate the new ID with an existing window priv. */ if (!AddResource(stuff->buffer, dbeWindowPrivResType, - (pointer)pDbeWindowPriv)) + (void *)pDbeWindowPriv)) { pDbeWindowPriv->IDs[i] = DBE_FREE_ID_ELEMENT; return(BadAlloc); @@ -610,7 +602,7 @@ ProcDbeAllocateBackBufferName(client) /* The DDX buffer allocation routine failed for the first buffer of * this window. */ - xfree(pDbeWindowPriv); + free(pDbeWindowPriv); return(status); } @@ -656,9 +648,9 @@ ProcDbeDeallocateBackBufferName(client) /* Buffer name must be valid */ if (!(pDbeWindowPriv = (DbeWindowPrivPtr)SecurityLookupIDByType(client, - stuff->buffer, dbeWindowPrivResType, SecurityDestroyAccess)) || + stuff->buffer, dbeWindowPrivResType, DixDestroyAccess)) || !(SecurityLookupIDByType(client, stuff->buffer, dbeDrawableResType, - SecurityDestroyAccess))) + DixDestroyAccess))) { client->errorValue = stuff->buffer; return(dbeErrorBase + DbeBadBuffer); @@ -725,26 +717,28 @@ ProcDbeSwapBuffers(client) DbeSwapInfoPtr swapInfo; xDbeSwapInfo *dbeSwapInfo; int error; - register int i, j; - int nStuff; - + unsigned int i, j; + unsigned int nStuff; + int nStuff_i; /* DDX API requires int for nStuff */ REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq); nStuff = stuff->n; /* use local variable for performance. */ if (nStuff == 0) { + REQUEST_SIZE_MATCH(xDbeSwapBuffersReq); return(Success); } if (nStuff > UINT32_MAX / sizeof(DbeSwapInfoRec)) return BadAlloc; + REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, nStuff * sizeof(xDbeSwapInfo)); /* Get to the swap info appended to the end of the request. */ dbeSwapInfo = (xDbeSwapInfo *)&stuff[1]; /* Allocate array to record swap information. */ - swapInfo = (DbeSwapInfoPtr)Xalloc(nStuff * sizeof(DbeSwapInfoRec)); + swapInfo = (DbeSwapInfoPtr)malloc(nStuff * sizeof(DbeSwapInfoRec)); if (swapInfo == NULL) { return(BadAlloc); @@ -757,16 +751,16 @@ ProcDbeSwapBuffers(client) /* Each window must be a valid window - BadWindow. */ if (!(pWin = SecurityLookupWindow(dbeSwapInfo[i].window, client, - SecurityWriteAccess))) + DixWriteAccess))) { - Xfree(swapInfo); + free(swapInfo); return(BadWindow); } /* Each window must be double-buffered - BadMatch. */ if (DBE_WINDOW_PRIV(pWin) == NULL) { - Xfree(swapInfo); + free(swapInfo); return(BadMatch); } @@ -775,7 +769,7 @@ ProcDbeSwapBuffers(client) { if (dbeSwapInfo[i].window == dbeSwapInfo[j].window) { - Xfree(swapInfo); + free(swapInfo); return(BadMatch); } } @@ -786,7 +780,7 @@ ProcDbeSwapBuffers(client) (dbeSwapInfo[i].swapAction != XdbeUntouched ) && (dbeSwapInfo[i].swapAction != XdbeCopied )) { - Xfree(swapInfo); + free(swapInfo); return(BadValue); } @@ -810,18 +804,19 @@ ProcDbeSwapBuffers(client) * could deal with cross-screen synchronization. */ - while (nStuff > 0) + nStuff_i = nStuff; + while (nStuff_i > 0) { pDbeScreenPriv = DBE_SCREEN_PRIV_FROM_WINDOW(swapInfo[0].pWindow); - error = (*pDbeScreenPriv->SwapBuffers)(client, &nStuff, swapInfo); + error = (*pDbeScreenPriv->SwapBuffers)(client, &nStuff_i, swapInfo); if (error != Success) { - Xfree(swapInfo); + free(swapInfo); return(error); } } - Xfree(swapInfo); + free(swapInfo); return(Success); } /* ProcDbeSwapBuffers() */ @@ -896,7 +891,7 @@ ProcDbeGetVisualInfo(client) xDbeGetVisualInfoReply rep; Drawable *drawables; DrawablePtr *pDrawables = NULL; - register int i, j, n; + register int i, j; register int count; /* number of visual infos in reply */ register int length; /* length of reply */ ScreenPtr pScreen; @@ -910,7 +905,7 @@ ProcDbeGetVisualInfo(client) /* Make sure any specified drawables are valid. */ if (stuff->n != 0) { - if (!(pDrawables = (DrawablePtr *)Xalloc(stuff->n * + if (!(pDrawables = (DrawablePtr *)malloc(stuff->n * sizeof(DrawablePtr)))) { return(BadAlloc); @@ -921,21 +916,21 @@ ProcDbeGetVisualInfo(client) for (i = 0; i < stuff->n; i++) { if (!(pDrawables[i] = (DrawablePtr)SecurityLookupDrawable( - drawables[i], client, SecurityReadAccess))) + drawables[i], client, DixReadAccess))) { - Xfree(pDrawables); + free(pDrawables); return(BadDrawable); } } } count = (stuff->n == 0) ? screenInfo.numScreens : stuff->n; - if (!(pScrVisInfo = (XdbeScreenVisualInfo *)xalloc(count * + if (!(pScrVisInfo = (XdbeScreenVisualInfo *)malloc(count * sizeof(XdbeScreenVisualInfo)))) { if (pDrawables) { - Xfree(pDrawables); + free(pDrawables); } return(BadAlloc); @@ -956,13 +951,13 @@ ProcDbeGetVisualInfo(client) /* Free visinfos that we allocated for previous screen infos.*/ for (j = 0; j < i; j++) { - xfree(pScrVisInfo[j].visinfo); + free(pScrVisInfo[j].visinfo); } /* Free pDrawables if we needed to allocate it above. */ if (pDrawables) { - Xfree(pDrawables); + free(pDrawables); } return(BadAlloc); @@ -982,13 +977,13 @@ ProcDbeGetVisualInfo(client) if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.m, n); + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swapl(&rep.m); } /* Send off reply. */ - WriteToClient(client, sizeof(xDbeGetVisualInfoReply), (char *)&rep); + WriteToClient(client, sizeof(xDbeGetVisualInfoReply), &rep); for (i = 0; i < count; i++) { @@ -1001,10 +996,10 @@ ProcDbeGetVisualInfo(client) if (client->swapped) { - swapl(&data32, n); + swapl(&data32); } - WriteToClient(client, sizeof(CARD32), (char *)&data32); + WriteToClient(client, sizeof(CARD32), &data32); /* Now send off visual info items. */ for (j = 0; j < pScrVisInfo[i].count; j++) @@ -1022,7 +1017,7 @@ ProcDbeGetVisualInfo(client) if (client->swapped) { - swapl(&visInfo.visualID, n); + swapl(&visInfo.visualID); /* We do not need to swap depth and perfLevel since they are * already 1 byte quantities. @@ -1030,20 +1025,20 @@ ProcDbeGetVisualInfo(client) } /* Write visualID(32), depth(8), perfLevel(8), and pad(16). */ - WriteToClient(client, 2*sizeof(CARD32), (char *)&visInfo.visualID); + WriteToClient(client, 2*sizeof(CARD32), &visInfo.visualID); } } /* Clean up memory. */ for (i = 0; i < count; i++) { - xfree(pScrVisInfo[i].visinfo); + free(pScrVisInfo[i].visinfo); } - xfree(pScrVisInfo); + free(pScrVisInfo); if (pDrawables) { - Xfree(pDrawables); + free(pDrawables); } return(client->noClientException); @@ -1073,13 +1068,11 @@ ProcDbeGetBackBufferAttributes(client) REQUEST(xDbeGetBackBufferAttributesReq); xDbeGetBackBufferAttributesReply rep; DbeWindowPrivPtr pDbeWindowPriv; - int n; - REQUEST_SIZE_MATCH(xDbeGetBackBufferAttributesReq); if (!(pDbeWindowPriv = (DbeWindowPrivPtr)SecurityLookupIDByType(client, - stuff->buffer, dbeWindowPrivResType, SecurityReadAccess))) + stuff->buffer, dbeWindowPrivResType, DixReadAccess))) { rep.attributes = None; } @@ -1094,13 +1087,13 @@ ProcDbeGetBackBufferAttributes(client) if (client->swapped) { - swaps(&rep.sequenceNumber, n); - swapl(&rep.length, n); - swapl(&rep.attributes, n); + swaps(&rep.sequenceNumber); + swapl(&rep.length); + swapl(&rep.attributes); } WriteToClient(client, sizeof(xDbeGetBackBufferAttributesReply), - (char *)&rep); + &rep); return(client->noClientException); } /* ProcDbeGetbackBufferAttributes() */ @@ -1177,10 +1170,8 @@ SProcDbeGetVersion(client) ClientPtr client; { REQUEST(xDbeGetVersionReq); - register int n; - - swaps(&stuff->length, n); + swaps(&stuff->length); return(ProcDbeGetVersion(client)); } /* SProcDbeGetVersion() */ @@ -1214,13 +1205,12 @@ SProcDbeAllocateBackBufferName(client) ClientPtr client; { REQUEST(xDbeAllocateBackBufferNameReq); - register int n; - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xDbeAllocateBackBufferNameReq); - swapl(&stuff->window, n); - swapl(&stuff->buffer, n); + swapl(&stuff->window); + swapl(&stuff->buffer); /* stuff->swapAction is a byte. We do not need to swap this field. */ return(ProcDbeAllocateBackBufferName(client)); @@ -1250,13 +1240,11 @@ SProcDbeDeallocateBackBufferName(client) ClientPtr client; { REQUEST (xDbeDeallocateBackBufferNameReq); - register int n; - - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xDbeDeallocateBackBufferNameReq); - swapl(&stuff->buffer, n); + swapl(&stuff->buffer); return(ProcDbeDeallocateBackBufferName(client)); @@ -1289,14 +1277,17 @@ SProcDbeSwapBuffers(client) ClientPtr client; { REQUEST(xDbeSwapBuffersReq); - register int i, n; + unsigned int i; xDbeSwapInfo *pSwapInfo; - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_AT_LEAST_SIZE(xDbeSwapBuffersReq); - swapl(&stuff->n, n); + swapl(&stuff->n); + if (stuff->n > UINT32_MAX / sizeof(DbeSwapInfoRec)) + return BadAlloc; + REQUEST_FIXED_SIZE(xDbeSwapBuffersReq, stuff->n * sizeof(xDbeSwapInfo)); if (stuff->n != 0) { @@ -1308,7 +1299,7 @@ SProcDbeSwapBuffers(client) */ for (i = 0; i < stuff->n; i++) { - swapl(&pSwapInfo->window, n); + swapl(&pSwapInfo->window); } } @@ -1338,9 +1329,8 @@ SProcDbeBeginIdiom(client) ClientPtr client; { REQUEST(xDbeBeginIdiomReq); - register int n; - swaps(&stuff->length, n); + swaps(&stuff->length); return(ProcDbeBeginIdiom(client)); } /* SProcDbeBeginIdiom() */ @@ -1368,13 +1358,11 @@ SProcDbeGetVisualInfo(client) ClientPtr client; { REQUEST(xDbeGetVisualInfoReq); - register int n; - - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_AT_LEAST_SIZE(xDbeGetVisualInfoReq); - swapl(&stuff->n, n); + swapl(&stuff->n); SwapRestL(stuff); return(ProcDbeGetVisualInfo(client)); @@ -1403,12 +1391,11 @@ SProcDbeGetBackBufferAttributes(client) ClientPtr client; { REQUEST (xDbeGetBackBufferAttributesReq); - register int n; - swaps(&stuff->length, n); + swaps(&stuff->length); REQUEST_SIZE_MATCH(xDbeGetBackBufferAttributesReq); - swapl(&stuff->buffer, n); + swapl(&stuff->buffer); return(ProcDbeGetBackBufferAttributes(client)); @@ -1485,7 +1472,7 @@ DbeSetupBackgroundPainter(pWin, pGC) WindowPtr pWin; GCPtr pGC; { - pointer gcvalues[4]; + void *gcvalues[4]; int ts_x_origin, ts_y_origin; PixUnion background; int backgroundState; @@ -1511,16 +1498,16 @@ DbeSetupBackgroundPainter(pWin, pGC) switch (backgroundState) { case BackgroundPixel: - gcvalues[0] = (pointer)background.pixel; - gcvalues[1] = (pointer)FillSolid; + gcvalues[0] = (void *)background.pixel; + gcvalues[1] = (void *)FillSolid; gcmask = GCForeground|GCFillStyle; break; case BackgroundPixmap: - gcvalues[0] = (pointer)FillTiled; - gcvalues[1] = (pointer)background.pixmap; - gcvalues[2] = (pointer)(long)ts_x_origin; - gcvalues[3] = (pointer)(long)ts_y_origin; + gcvalues[0] = (void *)FillTiled; + gcvalues[1] = (void *)background.pixmap; + gcvalues[2] = (void *)(long)ts_x_origin; + gcvalues[3] = (void *)(long)ts_y_origin; gcmask = GCFillStyle|GCTile|GCTileStipXOrigin|GCTileStipYOrigin; break; @@ -1557,7 +1544,7 @@ DbeSetupBackgroundPainter(pWin, pGC) *****************************************************************************/ static int DbeDrawableDelete(pDrawable, id) - pointer pDrawable; + void *pDrawable; XID id; { return(Success); @@ -1578,7 +1565,7 @@ DbeDrawableDelete(pDrawable, id) *****************************************************************************/ static int DbeWindowPrivDelete(pDbeWinPriv, id) - pointer pDbeWinPriv; + void *pDbeWinPriv; XID id; { DbeScreenPrivPtr pDbeScreenPriv; @@ -1635,7 +1622,7 @@ DbeWindowPrivDelete(pDbeWinPriv, id) DBE_INIT_MAX_IDS * sizeof(XID)); /* Free the extended array; use the static array. */ - xfree(pDbeWindowPriv->IDs); + free(pDbeWindowPriv->IDs); pDbeWindowPriv->IDs = pDbeWindowPriv->initIDs; pDbeWindowPriv->maxAvailableIDs = DBE_INIT_MAX_IDS; } @@ -1663,10 +1650,10 @@ DbeWindowPrivDelete(pDbeWinPriv, id) { /* Reset the DBE window priv pointer. */ pDbeWindowPriv->pWindow->devPrivates[dbeWindowPrivIndex].ptr = - (pointer)NULL; + (void *)NULL; /* We are done with the window priv. */ - xfree(pDbeWindowPriv); + free(pDbeWindowPriv); } return(Success); @@ -1714,10 +1701,10 @@ DbeResetProc(extEntry) if (pDbeScreenPriv->winPrivPrivSizes) { - xfree(pDbeScreenPriv->winPrivPrivSizes); + free(pDbeScreenPriv->winPrivPrivSizes); } - xfree(pDbeScreenPriv); + free(pDbeScreenPriv); } } @@ -1855,7 +1842,7 @@ DbeExtensionInit() /* Create the resource types. */ dbeDrawableResType = - CreateNewResourceType(DbeDrawableDelete) | RC_CACHED | RC_DRAWABLE; + CreateNewResourceType(DbeDrawableDelete) | RC_DRAWABLE; dbeWindowPrivResType = CreateNewResourceType(DbeWindowPrivDelete); @@ -1869,7 +1856,7 @@ DbeExtensionInit() if (!AllocateWindowPrivate(pScreen, dbeWindowPrivIndex, 0) || !(pDbeScreenPriv = - (DbeScreenPrivPtr)Xcalloc(sizeof(DbeScreenPrivRec)))) + (DbeScreenPrivPtr)calloc(1, sizeof(DbeScreenPrivRec)))) { /* If we can not alloc a window or screen private, * then free any privates that we already alloc'ed and return @@ -1877,13 +1864,13 @@ DbeExtensionInit() for (j = 0; j < i; j++) { - xfree(screenInfo.screens[j]->devPrivates[dbeScreenPrivIndex].ptr); + free(screenInfo.screens[j]->devPrivates[dbeScreenPrivIndex].ptr); screenInfo.screens[j]->devPrivates[dbeScreenPrivIndex].ptr = NULL; } return; } - pScreen->devPrivates[dbeScreenPrivIndex].ptr = (pointer)pDbeScreenPriv; + pScreen->devPrivates[dbeScreenPrivIndex].ptr = (void *)pDbeScreenPriv; /* Store the DBE priv priv size info for later use when allocating * priv privs at the driver level. @@ -1981,7 +1968,7 @@ DbeExtensionInit() for (i = 0; i < screenInfo.numScreens; i++) { - xfree(screenInfo.screens[i]->devPrivates[dbeScreenPrivIndex].ptr); + free(screenInfo.screens[i]->devPrivates[dbeScreenPrivIndex].ptr); pScreen->devPrivates[dbeScreenPrivIndex].ptr = NULL; } return; |
