1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186 |
- /************************************************************
- Copyright 1987, 1998 The Open Group
- 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.
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- Except as contained in this notice, the name of The Open Group shall not be
- used in advertising or otherwise to promote the sale, use or other dealings
- in this Software without prior written authorization from The Open Group.
- Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
- All Rights Reserved
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose and without fee is hereby granted,
- 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 Digital not be
- used in advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
- DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- DIGITAL 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 <X11/X.h>
- #include <X11/Xproto.h>
- #include "misc.h"
- #include "dixstruct.h"
- #include <X11/fonts/fontstruct.h>
- #include "scrnintstr.h"
- #include "swaprep.h"
- #include "globals.h"
- static void SwapFontInfo(xQueryFontReply * pr);
- static void SwapCharInfo(xCharInfo * pInfo);
- static void SwapFont(xQueryFontReply * pr, Bool hasGlyphs);
- /**
- * Thanks to Jack Palevich for testing and subsequently rewriting all this
- *
- * \param size size in bytes
- */
- _X_EXPORT void
- Swap32Write(ClientPtr pClient, int size, register CARD32 *pbuf)
- {
- int i;
- size >>= 2;
- for (i = 0; i < size; i++)
- /* brackets are mandatory here, because "swapl" macro expands
- to several statements */
- {
- swapl(&pbuf[i]);
- }
- (void) WriteToClient(pClient, size << 2, (char *) pbuf);
- }
- /**
- *
- * \param size size in bytes
- */
- _X_EXPORT void
- CopySwap32Write(ClientPtr pClient, int size, CARD32 *pbuf)
- {
- int bufsize = size;
- CARD32 *pbufT;
- CARD32 *from, *to, *fromLast, *toLast;
- CARD32 tmpbuf[1];
- /* Allocate as big a buffer as we can... */
- while (!(pbufT = (CARD32 *) ALLOCATE_LOCAL(bufsize))) {
- bufsize >>= 1;
- if (bufsize == 4) {
- pbufT = tmpbuf;
- break;
- }
- }
- /* convert lengths from # of bytes to # of longs */
- size >>= 2;
- bufsize >>= 2;
- from = pbuf;
- fromLast = from + size;
- while (from < fromLast) {
- int nbytes;
- to = pbufT;
- toLast = to + min(bufsize, fromLast - from);
- nbytes = (toLast - to) << 2;
- while (to < toLast) {
- /* can't write "cpswapl(*from++, *to++)" because cpswapl is a macro
- that evaulates its args more than once */
- cpswapl(*from, *to);
- from++;
- to++;
- }
- (void) WriteToClient(pClient, nbytes, (char *) pbufT);
- }
- if (pbufT != tmpbuf)
- DEALLOCATE_LOCAL((char *) pbufT);
- }
- /**
- *
- * \param size size in bytes
- */
- void
- CopySwap16Write(ClientPtr pClient, int size, short *pbuf)
- {
- int bufsize = size;
- short *pbufT;
- short *from, *to, *fromLast, *toLast;
- short tmpbuf[2];
- /* Allocate as big a buffer as we can... */
- while (!(pbufT = (short *) ALLOCATE_LOCAL(bufsize))) {
- bufsize >>= 1;
- if (bufsize == 4) {
- pbufT = tmpbuf;
- break;
- }
- }
- /* convert lengths from # of bytes to # of shorts */
- size >>= 1;
- bufsize >>= 1;
- from = pbuf;
- fromLast = from + size;
- while (from < fromLast) {
- int nbytes;
- to = pbufT;
- toLast = to + min(bufsize, fromLast - from);
- nbytes = (toLast - to) << 1;
- while (to < toLast) {
- /* can't write "cpswaps(*from++, *to++)" because cpswaps is a macro
- that evaulates its args more than once */
- cpswaps(*from, *to);
- from++;
- to++;
- }
- (void) WriteToClient(pClient, nbytes, (char *) pbufT);
- }
- if (pbufT != tmpbuf)
- DEALLOCATE_LOCAL((char *) pbufT);
- }
- /* Extra-small reply */
- void
- SGenericReply(ClientPtr pClient, int size, xGenericReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- /* Extra-large reply */
- void
- SGetWindowAttributesReply(ClientPtr pClient, int size,
- xGetWindowAttributesReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swapl(&pRep->visualID);
- swaps(&pRep->class);
- swapl(&pRep->backingBitPlanes);
- swapl(&pRep->backingPixel);
- swapl(&pRep->colormap);
- swapl(&pRep->allEventMasks);
- swapl(&pRep->yourEventMask);
- swaps(&pRep->doNotPropagateMask);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetGeometryReply(ClientPtr pClient, int size, xGetGeometryReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->root);
- swaps(&pRep->x);
- swaps(&pRep->y);
- swaps(&pRep->width);
- swaps(&pRep->height);
- swaps(&pRep->borderWidth);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SQueryTreeReply(ClientPtr pClient, int size, xQueryTreeReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swapl(&pRep->root);
- swapl(&pRep->parent);
- swaps(&pRep->nChildren);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SInternAtomReply(ClientPtr pClient, int size, xInternAtomReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->atom);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetAtomNameReply(ClientPtr pClient, int size, xGetAtomNameReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swaps(&pRep->nameLength);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetPropertyReply(ClientPtr pClient, int size, xGetPropertyReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swapl(&pRep->propertyType);
- swapl(&pRep->bytesAfter);
- swapl(&pRep->nItems);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SListPropertiesReply(ClientPtr pClient, int size, xListPropertiesReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swaps(&pRep->nProperties);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetSelectionOwnerReply(ClientPtr pClient, int size,
- xGetSelectionOwnerReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->owner);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SQueryPointerReply(ClientPtr pClient, int size, xQueryPointerReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->root);
- swapl(&pRep->child);
- swaps(&pRep->rootX);
- swaps(&pRep->rootY);
- swaps(&pRep->winX);
- swaps(&pRep->winY);
- swaps(&pRep->mask);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SwapTimecoord(xTimecoord * pCoord)
- {
- swapl(&pCoord->time);
- swaps(&pCoord->x);
- swaps(&pCoord->y);
- }
- void
- SwapTimeCoordWrite(ClientPtr pClient, int size, xTimecoord * pRep)
- {
- int i, n;
- xTimecoord *pRepT;
- n = size / sizeof(xTimecoord);
- pRepT = pRep;
- for (i = 0; i < n; i++) {
- SwapTimecoord(pRepT);
- pRepT++;
- }
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetMotionEventsReply(ClientPtr pClient, int size, xGetMotionEventsReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swapl(&pRep->nEvents);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- STranslateCoordsReply(ClientPtr pClient, int size, xTranslateCoordsReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->child);
- swaps(&pRep->dstX);
- swaps(&pRep->dstY);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetInputFocusReply(ClientPtr pClient, int size, xGetInputFocusReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->focus);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- /* extra long reply */
- void
- SQueryKeymapReply(ClientPtr pClient, int size, xQueryKeymapReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- static void
- SwapCharInfo(xCharInfo * pInfo)
- {
- swaps(&pInfo->leftSideBearing);
- swaps(&pInfo->rightSideBearing);
- swaps(&pInfo->characterWidth);
- swaps(&pInfo->ascent);
- swaps(&pInfo->descent);
- swaps(&pInfo->attributes);
- }
- static void
- SwapFontInfo(xQueryFontReply * pr)
- {
- swaps(&pr->minCharOrByte2);
- swaps(&pr->maxCharOrByte2);
- swaps(&pr->defaultChar);
- swaps(&pr->nFontProps);
- swaps(&pr->fontAscent);
- swaps(&pr->fontDescent);
- SwapCharInfo(&pr->minBounds);
- SwapCharInfo(&pr->maxBounds);
- swapl(&pr->nCharInfos);
- }
- static void
- SwapFont(xQueryFontReply * pr, Bool hasGlyphs)
- {
- unsigned i;
- xCharInfo *pxci;
- unsigned nchars, nprops;
- char *pby;
- swaps(&pr->sequenceNumber);
- swapl(&pr->length);
- nchars = pr->nCharInfos;
- nprops = pr->nFontProps;
- SwapFontInfo(pr);
- pby = (char *) &pr[1];
- /* Font properties are an atom and either an int32 or a CARD32, so
- * they are always 2 4 byte values */
- for (i = 0; i < nprops; i++) {
- swapl((int *) pby);
- pby += 4;
- swapl((int *) pby);
- pby += 4;
- }
- if (hasGlyphs) {
- pxci = (xCharInfo *) pby;
- for (i = 0; i < nchars; i++, pxci++)
- SwapCharInfo(pxci);
- }
- }
- void
- SQueryFontReply(ClientPtr pClient, int size, xQueryFontReply * pRep)
- {
- SwapFont(pRep, TRUE);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SQueryTextExtentsReply(ClientPtr pClient, int size,
- xQueryTextExtentsReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swaps(&pRep->fontAscent);
- swaps(&pRep->fontDescent);
- swaps(&pRep->overallAscent);
- swaps(&pRep->overallDescent);
- swapl(&pRep->overallWidth);
- swapl(&pRep->overallLeft);
- swapl(&pRep->overallRight);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SListFontsReply(ClientPtr pClient, int size, xListFontsReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swaps(&pRep->nFonts);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SListFontsWithInfoReply(ClientPtr pClient, int size,
- xListFontsWithInfoReply * pRep)
- {
- SwapFont((xQueryFontReply *) pRep, FALSE);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetFontPathReply(ClientPtr pClient, int size, xGetFontPathReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swaps(&pRep->nPaths);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetImageReply(ClientPtr pClient, int size, xGetImageReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swapl(&pRep->visual);
- (void) WriteToClient(pClient, size, (char *) pRep);
- /* Fortunately, image doesn't need swapping */
- }
- void
- SListInstalledColormapsReply(ClientPtr pClient, int size,
- xListInstalledColormapsReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swaps(&pRep->nColormaps);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SAllocColorReply(pClient, size, pRep)
- ClientPtr pClient;
- int size;
- xAllocColorReply *pRep;
- {
- swaps(&pRep->sequenceNumber);
- swaps(&pRep->red);
- swaps(&pRep->green);
- swaps(&pRep->blue);
- swapl(&pRep->pixel);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SAllocNamedColorReply(ClientPtr pClient, int size, xAllocNamedColorReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->pixel);
- swaps(&pRep->exactRed);
- swaps(&pRep->exactGreen);
- swaps(&pRep->exactBlue);
- swaps(&pRep->screenRed);
- swaps(&pRep->screenGreen);
- swaps(&pRep->screenBlue);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SAllocColorCellsReply(ClientPtr pClient, int size, xAllocColorCellsReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swaps(&pRep->nPixels);
- swaps(&pRep->nMasks);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SAllocColorPlanesReply(ClientPtr pClient, int size,
- xAllocColorPlanesReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swaps(&pRep->nPixels);
- swapl(&pRep->redMask);
- swapl(&pRep->greenMask);
- swapl(&pRep->blueMask);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SwapRGB(xrgb * prgb)
- {
- swaps(&prgb->red);
- swaps(&prgb->green);
- swaps(&prgb->blue);
- }
- void
- SQColorsExtend(ClientPtr pClient, int size, xrgb * prgb)
- {
- int i, n;
- xrgb *prgbT;
- n = size / sizeof(xrgb);
- prgbT = prgb;
- for (i = 0; i < n; i++) {
- SwapRGB(prgbT);
- prgbT++;
- }
- (void) WriteToClient(pClient, size, (char *) prgb);
- }
- void
- SQueryColorsReply(ClientPtr pClient, int size, xQueryColorsReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swaps(&pRep->nColors);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SLookupColorReply(ClientPtr pClient, int size, xLookupColorReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swaps(&pRep->exactRed);
- swaps(&pRep->exactGreen);
- swaps(&pRep->exactBlue);
- swaps(&pRep->screenRed);
- swaps(&pRep->screenGreen);
- swaps(&pRep->screenBlue);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SQueryBestSizeReply(ClientPtr pClient, int size, xQueryBestSizeReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swaps(&pRep->width);
- swaps(&pRep->height);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SListExtensionsReply(ClientPtr pClient, int size, xListExtensionsReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetKeyboardMappingReply(ClientPtr pClient, int size,
- xGetKeyboardMappingReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetPointerMappingReply(ClientPtr pClient, int size,
- xGetPointerMappingReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetModifierMappingReply(ClientPtr pClient, int size,
- xGetModifierMappingReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetKeyboardControlReply(ClientPtr pClient, int size,
- xGetKeyboardControlReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swapl(&pRep->ledMask);
- swaps(&pRep->bellPitch);
- swaps(&pRep->bellDuration);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetPointerControlReply(ClientPtr pClient, int size,
- xGetPointerControlReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swaps(&pRep->accelNumerator);
- swaps(&pRep->accelDenominator);
- swaps(&pRep->threshold);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SGetScreenSaverReply(ClientPtr pClient, int size, xGetScreenSaverReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swaps(&pRep->timeout);
- swaps(&pRep->interval);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SLHostsExtend(ClientPtr pClient, int size, char *buf)
- {
- char *bufT = buf;
- char *endbuf = buf + size;
- while (bufT < endbuf) {
- xHostEntry *host = (xHostEntry *) bufT;
- int len = host->length;
- swaps(&host->length);
- bufT += sizeof(xHostEntry) + (((len + 3) >> 2) << 2);
- }
- (void) WriteToClient(pClient, size, buf);
- }
- void
- SListHostsReply(ClientPtr pClient, int size, xListHostsReply * pRep)
- {
- swaps(&pRep->sequenceNumber);
- swapl(&pRep->length);
- swaps(&pRep->nHosts);
- (void) WriteToClient(pClient, size, (char *) pRep);
- }
- void
- SErrorEvent(xError * from, xError * to)
- {
- to->type = X_Error;
- to->errorCode = from->errorCode;
- cpswaps(from->sequenceNumber, to->sequenceNumber);
- cpswapl(from->resourceID, to->resourceID);
- cpswaps(from->minorCode, to->minorCode);
- to->majorCode = from->majorCode;
- }
- void
- SKeyButtonPtrEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- to->u.u.detail = from->u.u.detail;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.keyButtonPointer.time, to->u.keyButtonPointer.time);
- cpswapl(from->u.keyButtonPointer.root, to->u.keyButtonPointer.root);
- cpswapl(from->u.keyButtonPointer.event, to->u.keyButtonPointer.event);
- cpswapl(from->u.keyButtonPointer.child, to->u.keyButtonPointer.child);
- cpswaps(from->u.keyButtonPointer.rootX, to->u.keyButtonPointer.rootX);
- cpswaps(from->u.keyButtonPointer.rootY, to->u.keyButtonPointer.rootY);
- cpswaps(from->u.keyButtonPointer.eventX, to->u.keyButtonPointer.eventX);
- cpswaps(from->u.keyButtonPointer.eventY, to->u.keyButtonPointer.eventY);
- cpswaps(from->u.keyButtonPointer.state, to->u.keyButtonPointer.state);
- to->u.keyButtonPointer.sameScreen = from->u.keyButtonPointer.sameScreen;
- }
- void
- SEnterLeaveEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- to->u.u.detail = from->u.u.detail;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.enterLeave.time, to->u.enterLeave.time);
- cpswapl(from->u.enterLeave.root, to->u.enterLeave.root);
- cpswapl(from->u.enterLeave.event, to->u.enterLeave.event);
- cpswapl(from->u.enterLeave.child, to->u.enterLeave.child);
- cpswaps(from->u.enterLeave.rootX, to->u.enterLeave.rootX);
- cpswaps(from->u.enterLeave.rootY, to->u.enterLeave.rootY);
- cpswaps(from->u.enterLeave.eventX, to->u.enterLeave.eventX);
- cpswaps(from->u.enterLeave.eventY, to->u.enterLeave.eventY);
- cpswaps(from->u.enterLeave.state, to->u.enterLeave.state);
- to->u.enterLeave.mode = from->u.enterLeave.mode;
- to->u.enterLeave.flags = from->u.enterLeave.flags;
- }
- void
- SFocusEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- to->u.u.detail = from->u.u.detail;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.focus.window, to->u.focus.window);
- to->u.focus.mode = from->u.focus.mode;
- }
- void
- SExposeEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.expose.window, to->u.expose.window);
- cpswaps(from->u.expose.x, to->u.expose.x);
- cpswaps(from->u.expose.y, to->u.expose.y);
- cpswaps(from->u.expose.width, to->u.expose.width);
- cpswaps(from->u.expose.height, to->u.expose.height);
- cpswaps(from->u.expose.count, to->u.expose.count);
- }
- void
- SGraphicsExposureEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.graphicsExposure.drawable, to->u.graphicsExposure.drawable);
- cpswaps(from->u.graphicsExposure.x, to->u.graphicsExposure.x);
- cpswaps(from->u.graphicsExposure.y, to->u.graphicsExposure.y);
- cpswaps(from->u.graphicsExposure.width, to->u.graphicsExposure.width);
- cpswaps(from->u.graphicsExposure.height, to->u.graphicsExposure.height);
- cpswaps(from->u.graphicsExposure.minorEvent,
- to->u.graphicsExposure.minorEvent);
- cpswaps(from->u.graphicsExposure.count, to->u.graphicsExposure.count);
- to->u.graphicsExposure.majorEvent = from->u.graphicsExposure.majorEvent;
- }
- void
- SNoExposureEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.noExposure.drawable, to->u.noExposure.drawable);
- cpswaps(from->u.noExposure.minorEvent, to->u.noExposure.minorEvent);
- to->u.noExposure.majorEvent = from->u.noExposure.majorEvent;
- }
- void
- SVisibilityEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.visibility.window, to->u.visibility.window);
- to->u.visibility.state = from->u.visibility.state;
- }
- void
- SCreateNotifyEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.createNotify.window, to->u.createNotify.window);
- cpswapl(from->u.createNotify.parent, to->u.createNotify.parent);
- cpswaps(from->u.createNotify.x, to->u.createNotify.x);
- cpswaps(from->u.createNotify.y, to->u.createNotify.y);
- cpswaps(from->u.createNotify.width, to->u.createNotify.width);
- cpswaps(from->u.createNotify.height, to->u.createNotify.height);
- cpswaps(from->u.createNotify.borderWidth, to->u.createNotify.borderWidth);
- to->u.createNotify.override = from->u.createNotify.override;
- }
- void
- SDestroyNotifyEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.destroyNotify.event, to->u.destroyNotify.event);
- cpswapl(from->u.destroyNotify.window, to->u.destroyNotify.window);
- }
- void
- SUnmapNotifyEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.unmapNotify.event, to->u.unmapNotify.event);
- cpswapl(from->u.unmapNotify.window, to->u.unmapNotify.window);
- to->u.unmapNotify.fromConfigure = from->u.unmapNotify.fromConfigure;
- }
- void
- SMapNotifyEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.mapNotify.event, to->u.mapNotify.event);
- cpswapl(from->u.mapNotify.window, to->u.mapNotify.window);
- to->u.mapNotify.override = from->u.mapNotify.override;
- }
- void
- SMapRequestEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.mapRequest.parent, to->u.mapRequest.parent);
- cpswapl(from->u.mapRequest.window, to->u.mapRequest.window);
- }
- void
- SReparentEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.reparent.event, to->u.reparent.event);
- cpswapl(from->u.reparent.window, to->u.reparent.window);
- cpswapl(from->u.reparent.parent, to->u.reparent.parent);
- cpswaps(from->u.reparent.x, to->u.reparent.x);
- cpswaps(from->u.reparent.y, to->u.reparent.y);
- to->u.reparent.override = from->u.reparent.override;
- }
- void
- SConfigureNotifyEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.configureNotify.event, to->u.configureNotify.event);
- cpswapl(from->u.configureNotify.window, to->u.configureNotify.window);
- cpswapl(from->u.configureNotify.aboveSibling,
- to->u.configureNotify.aboveSibling);
- cpswaps(from->u.configureNotify.x, to->u.configureNotify.x);
- cpswaps(from->u.configureNotify.y, to->u.configureNotify.y);
- cpswaps(from->u.configureNotify.width, to->u.configureNotify.width);
- cpswaps(from->u.configureNotify.height, to->u.configureNotify.height);
- cpswaps(from->u.configureNotify.borderWidth,
- to->u.configureNotify.borderWidth);
- to->u.configureNotify.override = from->u.configureNotify.override;
- }
- void
- SConfigureRequestEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- to->u.u.detail = from->u.u.detail; /* actually stack-mode */
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.configureRequest.parent, to->u.configureRequest.parent);
- cpswapl(from->u.configureRequest.window, to->u.configureRequest.window);
- cpswapl(from->u.configureRequest.sibling, to->u.configureRequest.sibling);
- cpswaps(from->u.configureRequest.x, to->u.configureRequest.x);
- cpswaps(from->u.configureRequest.y, to->u.configureRequest.y);
- cpswaps(from->u.configureRequest.width, to->u.configureRequest.width);
- cpswaps(from->u.configureRequest.height, to->u.configureRequest.height);
- cpswaps(from->u.configureRequest.borderWidth,
- to->u.configureRequest.borderWidth);
- cpswaps(from->u.configureRequest.valueMask,
- to->u.configureRequest.valueMask);
- }
- void
- SGravityEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.gravity.event, to->u.gravity.event);
- cpswapl(from->u.gravity.window, to->u.gravity.window);
- cpswaps(from->u.gravity.x, to->u.gravity.x);
- cpswaps(from->u.gravity.y, to->u.gravity.y);
- }
- void
- SResizeRequestEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.resizeRequest.window, to->u.resizeRequest.window);
- cpswaps(from->u.resizeRequest.width, to->u.resizeRequest.width);
- cpswaps(from->u.resizeRequest.height, to->u.resizeRequest.height);
- }
- void
- SCirculateEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- to->u.u.detail = from->u.u.detail;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.circulate.event, to->u.circulate.event);
- cpswapl(from->u.circulate.window, to->u.circulate.window);
- cpswapl(from->u.circulate.parent, to->u.circulate.parent);
- to->u.circulate.place = from->u.circulate.place;
- }
- void
- SPropertyEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.property.window, to->u.property.window);
- cpswapl(from->u.property.atom, to->u.property.atom);
- cpswapl(from->u.property.time, to->u.property.time);
- to->u.property.state = from->u.property.state;
- }
- void
- SSelectionClearEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.selectionClear.time, to->u.selectionClear.time);
- cpswapl(from->u.selectionClear.window, to->u.selectionClear.window);
- cpswapl(from->u.selectionClear.atom, to->u.selectionClear.atom);
- }
- void
- SSelectionRequestEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.selectionRequest.time, to->u.selectionRequest.time);
- cpswapl(from->u.selectionRequest.owner, to->u.selectionRequest.owner);
- cpswapl(from->u.selectionRequest.requestor,
- to->u.selectionRequest.requestor);
- cpswapl(from->u.selectionRequest.selection,
- to->u.selectionRequest.selection);
- cpswapl(from->u.selectionRequest.target, to->u.selectionRequest.target);
- cpswapl(from->u.selectionRequest.property, to->u.selectionRequest.property);
- }
- void
- SSelectionNotifyEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.selectionNotify.time, to->u.selectionNotify.time);
- cpswapl(from->u.selectionNotify.requestor, to->u.selectionNotify.requestor);
- cpswapl(from->u.selectionNotify.selection, to->u.selectionNotify.selection);
- cpswapl(from->u.selectionNotify.target, to->u.selectionNotify.target);
- cpswapl(from->u.selectionNotify.property, to->u.selectionNotify.property);
- }
- void
- SColormapEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.colormap.window, to->u.colormap.window);
- cpswapl(from->u.colormap.colormap, to->u.colormap.colormap);
- to->u.colormap.new = from->u.colormap.new;
- to->u.colormap.state = from->u.colormap.state;
- }
- void
- SMappingEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- to->u.mappingNotify.request = from->u.mappingNotify.request;
- to->u.mappingNotify.firstKeyCode = from->u.mappingNotify.firstKeyCode;
- to->u.mappingNotify.count = from->u.mappingNotify.count;
- }
- void
- SClientMessageEvent(xEvent *from, xEvent *to)
- {
- to->u.u.type = from->u.u.type;
- to->u.u.detail = from->u.u.detail; /* actually format */
- cpswaps(from->u.u.sequenceNumber, to->u.u.sequenceNumber);
- cpswapl(from->u.clientMessage.window, to->u.clientMessage.window);
- cpswapl(from->u.clientMessage.u.l.type, to->u.clientMessage.u.l.type);
- switch (from->u.u.detail) {
- case 8:
- memmove(to->u.clientMessage.u.b.bytes,
- from->u.clientMessage.u.b.bytes, 20);
- break;
- case 16:
- cpswaps(from->u.clientMessage.u.s.shorts0,
- to->u.clientMessage.u.s.shorts0);
- cpswaps(from->u.clientMessage.u.s.shorts1,
- to->u.clientMessage.u.s.shorts1);
- cpswaps(from->u.clientMessage.u.s.shorts2,
- to->u.clientMessage.u.s.shorts2);
- cpswaps(from->u.clientMessage.u.s.shorts3,
- to->u.clientMessage.u.s.shorts3);
- cpswaps(from->u.clientMessage.u.s.shorts4,
- to->u.clientMessage.u.s.shorts4);
- cpswaps(from->u.clientMessage.u.s.shorts5,
- to->u.clientMessage.u.s.shorts5);
- cpswaps(from->u.clientMessage.u.s.shorts6,
- to->u.clientMessage.u.s.shorts6);
- cpswaps(from->u.clientMessage.u.s.shorts7,
- to->u.clientMessage.u.s.shorts7);
- cpswaps(from->u.clientMessage.u.s.shorts8,
- to->u.clientMessage.u.s.shorts8);
- cpswaps(from->u.clientMessage.u.s.shorts9,
- to->u.clientMessage.u.s.shorts9);
- break;
- case 32:
- cpswapl(from->u.clientMessage.u.l.longs0,
- to->u.clientMessage.u.l.longs0);
- cpswapl(from->u.clientMessage.u.l.longs1,
- to->u.clientMessage.u.l.longs1);
- cpswapl(from->u.clientMessage.u.l.longs2,
- to->u.clientMessage.u.l.longs2);
- cpswapl(from->u.clientMessage.u.l.longs3,
- to->u.clientMessage.u.l.longs3);
- cpswapl(from->u.clientMessage.u.l.longs4,
- to->u.clientMessage.u.l.longs4);
- break;
- }
- }
- void
- SKeymapNotifyEvent(xEvent *from, xEvent *to)
- {
- /* Keymap notify events are special; they have no
- sequence number field, and contain entirely 8-bit data */
- *to = *from;
- }
- _X_EXPORT void
- SwapConnSetupInfo(char *pInfo, char *pInfoT)
- {
- int i, j, k;
- xConnSetup *pConnSetup = (xConnSetup *) pInfo;
- xDepth *depth;
- xWindowRoot *root;
- SwapConnSetup(pConnSetup, (xConnSetup *) pInfoT);
- pInfo += sizeof(xConnSetup);
- pInfoT += sizeof(xConnSetup);
- /* Copy the vendor string */
- i = (pConnSetup->nbytesVendor + 3) & ~3;
- memcpy(pInfoT, pInfo, i);
- pInfo += i;
- pInfoT += i;
- /* The Pixmap formats don't need to be swapped, just copied. */
- i = sizeof(xPixmapFormat) * pConnSetup->numFormats;
- memcpy(pInfoT, pInfo, i);
- pInfo += i;
- pInfoT += i;
- for (i = 0; i < pConnSetup->numRoots; i++) {
- root = (xWindowRoot *) pInfo;
- SwapWinRoot(root, (xWindowRoot *) pInfoT);
- pInfo += sizeof(xWindowRoot);
- pInfoT += sizeof(xWindowRoot);
- for (j = 0; j < root->nDepths; j++) {
- depth = (xDepth *) pInfo;
- ((xDepth *) pInfoT)->depth = depth->depth;
- cpswaps(depth->nVisuals, ((xDepth *) pInfoT)->nVisuals);
- pInfo += sizeof(xDepth);
- pInfoT += sizeof(xDepth);
- for (k = 0; k < depth->nVisuals; k++) {
- SwapVisual((xVisualType *) pInfo, (xVisualType *) pInfoT);
- pInfo += sizeof(xVisualType);
- pInfoT += sizeof(xVisualType);
- }
- }
- }
- }
- void
- WriteSConnectionInfo(ClientPtr pClient, unsigned long size, char *pInfo)
- {
- char *pInfoTBase;
- pInfoTBase = (char *) ALLOCATE_LOCAL(size);
- if (!pInfoTBase) {
- pClient->noClientException = -1;
- return;
- }
- SwapConnSetupInfo(pInfo, pInfoTBase);
- (void) WriteToClient(pClient, (int) size, (char *) pInfoTBase);
- DEALLOCATE_LOCAL(pInfoTBase);
- }
- void
- SwapConnSetup(xConnSetup * pConnSetup, xConnSetup * pConnSetupT)
- {
- cpswapl(pConnSetup->release, pConnSetupT->release);
- cpswapl(pConnSetup->ridBase, pConnSetupT->ridBase);
- cpswapl(pConnSetup->ridMask, pConnSetupT->ridMask);
- cpswapl(pConnSetup->motionBufferSize, pConnSetupT->motionBufferSize);
- cpswaps(pConnSetup->nbytesVendor, pConnSetupT->nbytesVendor);
- cpswaps(pConnSetup->maxRequestSize, pConnSetupT->maxRequestSize);
- pConnSetupT->minKeyCode = pConnSetup->minKeyCode;
- pConnSetupT->maxKeyCode = pConnSetup->maxKeyCode;
- pConnSetupT->numRoots = pConnSetup->numRoots;
- pConnSetupT->numFormats = pConnSetup->numFormats;
- pConnSetupT->imageByteOrder = pConnSetup->imageByteOrder;
- pConnSetupT->bitmapBitOrder = pConnSetup->bitmapBitOrder;
- pConnSetupT->bitmapScanlineUnit = pConnSetup->bitmapScanlineUnit;
- pConnSetupT->bitmapScanlinePad = pConnSetup->bitmapScanlinePad;
- }
- void
- SwapWinRoot(xWindowRoot * pRoot, xWindowRoot * pRootT)
- {
- cpswapl(pRoot->windowId, pRootT->windowId);
- cpswapl(pRoot->defaultColormap, pRootT->defaultColormap);
- cpswapl(pRoot->whitePixel, pRootT->whitePixel);
- cpswapl(pRoot->blackPixel, pRootT->blackPixel);
- cpswapl(pRoot->currentInputMask, pRootT->currentInputMask);
- cpswaps(pRoot->pixWidth, pRootT->pixWidth);
- cpswaps(pRoot->pixHeight, pRootT->pixHeight);
- cpswaps(pRoot->mmWidth, pRootT->mmWidth);
- cpswaps(pRoot->mmHeight, pRootT->mmHeight);
- cpswaps(pRoot->minInstalledMaps, pRootT->minInstalledMaps);
- cpswaps(pRoot->maxInstalledMaps, pRootT->maxInstalledMaps);
- cpswapl(pRoot->rootVisualID, pRootT->rootVisualID);
- pRootT->backingStore = pRoot->backingStore;
- pRootT->saveUnders = pRoot->saveUnders;
- pRootT->rootDepth = pRoot->rootDepth;
- pRootT->nDepths = pRoot->nDepths;
- }
- void
- SwapVisual(xVisualType * pVis, xVisualType * pVisT)
- {
- cpswapl(pVis->visualID, pVisT->visualID);
- pVisT->class = pVis->class;
- pVisT->bitsPerRGB = pVis->bitsPerRGB;
- cpswaps(pVis->colormapEntries, pVisT->colormapEntries);
- cpswapl(pVis->redMask, pVisT->redMask);
- cpswapl(pVis->greenMask, pVisT->greenMask);
- cpswapl(pVis->blueMask, pVisT->blueMask);
- }
- _X_EXPORT void
- SwapConnSetupPrefix(xConnSetupPrefix * pcspFrom, xConnSetupPrefix * pcspTo)
- {
- pcspTo->success = pcspFrom->success;
- pcspTo->lengthReason = pcspFrom->lengthReason;
- cpswaps(pcspFrom->majorVersion, pcspTo->majorVersion);
- cpswaps(pcspFrom->minorVersion, pcspTo->minorVersion);
- cpswaps(pcspFrom->length, pcspTo->length);
- }
- void
- WriteSConnSetupPrefix(ClientPtr pClient, xConnSetupPrefix * pcsp)
- {
- xConnSetupPrefix cspT;
- SwapConnSetupPrefix(pcsp, &cspT);
- (void) WriteToClient(pClient, sizeof(cspT), (char *) &cspT);
- }
|