rrsdispatch.c revision 0b0d8713
105b261ecSmrg/* 205b261ecSmrg * Copyright © 2006 Keith Packard 305b261ecSmrg * 405b261ecSmrg * Permission to use, copy, modify, distribute, and sell this software and its 505b261ecSmrg * documentation for any purpose is hereby granted without fee, provided that 605b261ecSmrg * the above copyright notice appear in all copies and that both that copyright 705b261ecSmrg * notice and this permission notice appear in supporting documentation, and 805b261ecSmrg * that the name of the copyright holders not be used in advertising or 905b261ecSmrg * publicity pertaining to distribution of the software without specific, 1005b261ecSmrg * written prior permission. The copyright holders make no representations 1105b261ecSmrg * about the suitability of this software for any purpose. It is provided "as 1205b261ecSmrg * is" without express or implied warranty. 1305b261ecSmrg * 1405b261ecSmrg * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 1505b261ecSmrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 1605b261ecSmrg * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR 1705b261ecSmrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 1805b261ecSmrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 1905b261ecSmrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 2005b261ecSmrg * OF THIS SOFTWARE. 2105b261ecSmrg */ 2205b261ecSmrg 2305b261ecSmrg#include "randrstr.h" 2405b261ecSmrg 2505b261ecSmrgstatic int 2605b261ecSmrgSProcRRQueryVersion (ClientPtr client) 2705b261ecSmrg{ 2805b261ecSmrg register int n; 2905b261ecSmrg REQUEST(xRRQueryVersionReq); 3005b261ecSmrg 310b0d8713Smrg REQUEST_SIZE_MATCH(xRRQueryVersionReq); 3205b261ecSmrg swaps(&stuff->length, n); 3305b261ecSmrg swapl(&stuff->majorVersion, n); 3405b261ecSmrg swapl(&stuff->minorVersion, n); 3505b261ecSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 3605b261ecSmrg} 3705b261ecSmrg 3805b261ecSmrgstatic int 3905b261ecSmrgSProcRRGetScreenInfo (ClientPtr client) 4005b261ecSmrg{ 4105b261ecSmrg register int n; 4205b261ecSmrg REQUEST(xRRGetScreenInfoReq); 4305b261ecSmrg 440b0d8713Smrg REQUEST_SIZE_MATCH(xRRGetScreenInfoReq); 4505b261ecSmrg swaps(&stuff->length, n); 4605b261ecSmrg swapl(&stuff->window, n); 4705b261ecSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 4805b261ecSmrg} 4905b261ecSmrg 5005b261ecSmrgstatic int 5105b261ecSmrgSProcRRSetScreenConfig (ClientPtr client) 5205b261ecSmrg{ 5305b261ecSmrg register int n; 5405b261ecSmrg REQUEST(xRRSetScreenConfigReq); 5505b261ecSmrg 5605b261ecSmrg if (RRClientKnowsRates (client)) 5705b261ecSmrg { 5805b261ecSmrg REQUEST_SIZE_MATCH (xRRSetScreenConfigReq); 5905b261ecSmrg swaps (&stuff->rate, n); 6005b261ecSmrg } 6105b261ecSmrg else 6205b261ecSmrg { 6305b261ecSmrg REQUEST_SIZE_MATCH (xRR1_0SetScreenConfigReq); 6405b261ecSmrg } 6505b261ecSmrg 6605b261ecSmrg swaps(&stuff->length, n); 6705b261ecSmrg swapl(&stuff->drawable, n); 6805b261ecSmrg swapl(&stuff->timestamp, n); 6905b261ecSmrg swaps(&stuff->sizeID, n); 7005b261ecSmrg swaps(&stuff->rotation, n); 7105b261ecSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 7205b261ecSmrg} 7305b261ecSmrg 7405b261ecSmrgstatic int 7505b261ecSmrgSProcRRSelectInput (ClientPtr client) 7605b261ecSmrg{ 7705b261ecSmrg register int n; 7805b261ecSmrg REQUEST(xRRSelectInputReq); 7905b261ecSmrg 800b0d8713Smrg REQUEST_SIZE_MATCH(xRRSelectInputReq); 8105b261ecSmrg swaps(&stuff->length, n); 8205b261ecSmrg swapl(&stuff->window, n); 8305b261ecSmrg swaps(&stuff->enable, n); 8405b261ecSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 8505b261ecSmrg} 8605b261ecSmrg 8705b261ecSmrgstatic int 8805b261ecSmrgSProcRRGetScreenSizeRange (ClientPtr client) 8905b261ecSmrg{ 904642e01fSmrg int n; 9105b261ecSmrg REQUEST(xRRGetScreenSizeRangeReq); 924642e01fSmrg 9305b261ecSmrg REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq); 944642e01fSmrg swaps(&stuff->length, n); 954642e01fSmrg swapl(&stuff->window, n); 964642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 9705b261ecSmrg} 9805b261ecSmrg 9905b261ecSmrgstatic int 10005b261ecSmrgSProcRRSetScreenSize (ClientPtr client) 10105b261ecSmrg{ 1024642e01fSmrg int n; 10305b261ecSmrg REQUEST(xRRSetScreenSizeReq); 1044642e01fSmrg 10505b261ecSmrg REQUEST_SIZE_MATCH(xRRSetScreenSizeReq); 1064642e01fSmrg swaps(&stuff->length, n); 1074642e01fSmrg swapl(&stuff->window, n); 1084642e01fSmrg swaps(&stuff->width, n); 1094642e01fSmrg swaps(&stuff->height, n); 1104642e01fSmrg swapl(&stuff->widthInMillimeters, n); 1114642e01fSmrg swapl(&stuff->heightInMillimeters, n); 1124642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 11305b261ecSmrg} 11405b261ecSmrg 11505b261ecSmrgstatic int 11605b261ecSmrgSProcRRGetScreenResources (ClientPtr client) 11705b261ecSmrg{ 1184642e01fSmrg int n; 11905b261ecSmrg REQUEST(xRRGetScreenResourcesReq); 1204642e01fSmrg 12105b261ecSmrg REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq); 1224642e01fSmrg swaps(&stuff->length, n); 1234642e01fSmrg swapl(&stuff->window, n); 1244642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 12505b261ecSmrg} 12605b261ecSmrg 12705b261ecSmrgstatic int 12805b261ecSmrgSProcRRGetOutputInfo (ClientPtr client) 12905b261ecSmrg{ 1304642e01fSmrg int n; 1314642e01fSmrg REQUEST(xRRGetOutputInfoReq); 1324642e01fSmrg 13305b261ecSmrg REQUEST_SIZE_MATCH(xRRGetOutputInfoReq); 1344642e01fSmrg swaps(&stuff->length, n); 1354642e01fSmrg swapl(&stuff->output, n); 1364642e01fSmrg swapl(&stuff->configTimestamp, n); 1374642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 13805b261ecSmrg} 13905b261ecSmrg 14005b261ecSmrgstatic int 14105b261ecSmrgSProcRRListOutputProperties (ClientPtr client) 14205b261ecSmrg{ 1434642e01fSmrg int n; 14405b261ecSmrg REQUEST(xRRListOutputPropertiesReq); 1454642e01fSmrg 14605b261ecSmrg REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq); 1474642e01fSmrg swaps(&stuff->length, n); 1484642e01fSmrg swapl(&stuff->output, n); 1494642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 15005b261ecSmrg} 15105b261ecSmrg 15205b261ecSmrgstatic int 15305b261ecSmrgSProcRRQueryOutputProperty (ClientPtr client) 15405b261ecSmrg{ 1554642e01fSmrg int n; 15605b261ecSmrg REQUEST(xRRQueryOutputPropertyReq); 1574642e01fSmrg 15805b261ecSmrg REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq); 1594642e01fSmrg swaps(&stuff->length, n); 1604642e01fSmrg swapl(&stuff->output, n); 1614642e01fSmrg swapl(&stuff->property, n); 1624642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 16305b261ecSmrg} 16405b261ecSmrg 16505b261ecSmrgstatic int 16605b261ecSmrgSProcRRConfigureOutputProperty (ClientPtr client) 16705b261ecSmrg{ 1684642e01fSmrg int n; 16905b261ecSmrg REQUEST(xRRConfigureOutputPropertyReq); 1704642e01fSmrg 1710b0d8713Smrg REQUEST_AT_LEAST_SIZE(xRRConfigureOutputPropertyReq); 1724642e01fSmrg swaps(&stuff->length, n); 1734642e01fSmrg swapl(&stuff->output, n); 1744642e01fSmrg swapl(&stuff->property, n); 1754642e01fSmrg SwapRestL(stuff); 1764642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 17705b261ecSmrg} 17805b261ecSmrg 17905b261ecSmrgstatic int 18005b261ecSmrgSProcRRChangeOutputProperty (ClientPtr client) 18105b261ecSmrg{ 1824642e01fSmrg int n; 18305b261ecSmrg REQUEST(xRRChangeOutputPropertyReq); 1844642e01fSmrg 1854642e01fSmrg REQUEST_AT_LEAST_SIZE (xRRChangeOutputPropertyReq); 1864642e01fSmrg swaps(&stuff->length, n); 1874642e01fSmrg swapl(&stuff->output, n); 1884642e01fSmrg swapl(&stuff->property, n); 1894642e01fSmrg swapl(&stuff->type, n); 1904642e01fSmrg swapl(&stuff->nUnits, n); 1914642e01fSmrg switch(stuff->format) { 1924642e01fSmrg case 8: 1934642e01fSmrg break; 1944642e01fSmrg case 16: 1954642e01fSmrg SwapRestS(stuff); 1964642e01fSmrg break; 1974642e01fSmrg case 32: 1984642e01fSmrg SwapRestL(stuff); 1994642e01fSmrg break; 2004642e01fSmrg default: 2014642e01fSmrg client->errorValue = stuff->format; 2024642e01fSmrg return BadValue; 2034642e01fSmrg } 2044642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 20505b261ecSmrg} 20605b261ecSmrg 20705b261ecSmrgstatic int 20805b261ecSmrgSProcRRDeleteOutputProperty (ClientPtr client) 20905b261ecSmrg{ 2104642e01fSmrg int n; 21105b261ecSmrg REQUEST(xRRDeleteOutputPropertyReq); 21205b261ecSmrg 21305b261ecSmrg REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq); 2144642e01fSmrg swaps(&stuff->length, n); 2154642e01fSmrg swapl(&stuff->output, n); 2164642e01fSmrg swapl(&stuff->property, n); 2174642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 21805b261ecSmrg} 21905b261ecSmrg 22005b261ecSmrgstatic int 22105b261ecSmrgSProcRRGetOutputProperty (ClientPtr client) 22205b261ecSmrg{ 2234642e01fSmrg int n; 22405b261ecSmrg REQUEST(xRRGetOutputPropertyReq); 2254642e01fSmrg 22605b261ecSmrg REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq); 2274642e01fSmrg swaps(&stuff->length, n); 2284642e01fSmrg swapl(&stuff->output, n); 2294642e01fSmrg swapl(&stuff->property, n); 2304642e01fSmrg swapl(&stuff->type, n); 2314642e01fSmrg swapl(&stuff->longOffset, n); 2324642e01fSmrg swapl(&stuff->longLength, n); 2334642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 23405b261ecSmrg} 23505b261ecSmrg 23605b261ecSmrgstatic int 23705b261ecSmrgSProcRRCreateMode (ClientPtr client) 23805b261ecSmrg{ 2394642e01fSmrg int n; 2404642e01fSmrg xRRModeInfo *modeinfo; 24105b261ecSmrg REQUEST(xRRCreateModeReq); 2424642e01fSmrg 2434642e01fSmrg REQUEST_AT_LEAST_SIZE(xRRCreateModeReq); 2444642e01fSmrg swaps(&stuff->length, n); 2454642e01fSmrg swapl(&stuff->window, n); 2464642e01fSmrg 2474642e01fSmrg modeinfo = &stuff->modeInfo; 2484642e01fSmrg swapl(&modeinfo->id, n); 2494642e01fSmrg swaps(&modeinfo->width, n); 2504642e01fSmrg swaps(&modeinfo->height, n); 2514642e01fSmrg swapl(&modeinfo->dotClock, n); 2524642e01fSmrg swaps(&modeinfo->hSyncStart, n); 2534642e01fSmrg swaps(&modeinfo->hSyncEnd, n); 2544642e01fSmrg swaps(&modeinfo->hTotal, n); 2554642e01fSmrg swaps(&modeinfo->vSyncStart, n); 2564642e01fSmrg swaps(&modeinfo->vSyncEnd, n); 2574642e01fSmrg swaps(&modeinfo->vTotal, n); 2584642e01fSmrg swaps(&modeinfo->nameLength, n); 2594642e01fSmrg swapl(&modeinfo->modeFlags, n); 2604642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 26105b261ecSmrg} 26205b261ecSmrg 26305b261ecSmrgstatic int 26405b261ecSmrgSProcRRDestroyMode (ClientPtr client) 26505b261ecSmrg{ 2664642e01fSmrg int n; 26705b261ecSmrg REQUEST(xRRDestroyModeReq); 2684642e01fSmrg 26905b261ecSmrg REQUEST_SIZE_MATCH(xRRDestroyModeReq); 2704642e01fSmrg swaps(&stuff->length, n); 2714642e01fSmrg swapl(&stuff->mode, n); 2724642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 27305b261ecSmrg} 27405b261ecSmrg 27505b261ecSmrgstatic int 27605b261ecSmrgSProcRRAddOutputMode (ClientPtr client) 27705b261ecSmrg{ 2784642e01fSmrg int n; 27905b261ecSmrg REQUEST(xRRAddOutputModeReq); 2804642e01fSmrg 28105b261ecSmrg REQUEST_SIZE_MATCH(xRRAddOutputModeReq); 2824642e01fSmrg swaps(&stuff->length, n); 2834642e01fSmrg swapl(&stuff->output, n); 2844642e01fSmrg swapl(&stuff->mode, n); 2854642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 28605b261ecSmrg} 28705b261ecSmrg 28805b261ecSmrgstatic int 28905b261ecSmrgSProcRRDeleteOutputMode (ClientPtr client) 29005b261ecSmrg{ 2914642e01fSmrg int n; 29205b261ecSmrg REQUEST(xRRDeleteOutputModeReq); 2934642e01fSmrg 29405b261ecSmrg REQUEST_SIZE_MATCH(xRRDeleteOutputModeReq); 2954642e01fSmrg swaps(&stuff->length, n); 2964642e01fSmrg swapl(&stuff->output, n); 2974642e01fSmrg swapl(&stuff->mode, n); 2984642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 29905b261ecSmrg} 30005b261ecSmrg 30105b261ecSmrgstatic int 30205b261ecSmrgSProcRRGetCrtcInfo (ClientPtr client) 30305b261ecSmrg{ 3044642e01fSmrg int n; 30505b261ecSmrg REQUEST(xRRGetCrtcInfoReq); 3064642e01fSmrg 30705b261ecSmrg REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq); 3084642e01fSmrg swaps(&stuff->length, n); 3094642e01fSmrg swapl(&stuff->crtc, n); 3104642e01fSmrg swapl(&stuff->configTimestamp, n); 3114642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 31205b261ecSmrg} 31305b261ecSmrg 31405b261ecSmrgstatic int 31505b261ecSmrgSProcRRSetCrtcConfig (ClientPtr client) 31605b261ecSmrg{ 3174642e01fSmrg int n; 31805b261ecSmrg REQUEST(xRRSetCrtcConfigReq); 3194642e01fSmrg 3204642e01fSmrg REQUEST_AT_LEAST_SIZE(xRRSetCrtcConfigReq); 3214642e01fSmrg swaps(&stuff->length, n); 3224642e01fSmrg swapl(&stuff->crtc, n); 3234642e01fSmrg swapl(&stuff->timestamp, n); 3244642e01fSmrg swapl(&stuff->configTimestamp, n); 3254642e01fSmrg swaps(&stuff->x, n); 3264642e01fSmrg swaps(&stuff->y, n); 3274642e01fSmrg swapl(&stuff->mode, n); 3284642e01fSmrg swaps(&stuff->rotation, n); 3294642e01fSmrg SwapRestL(stuff); 3304642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 33105b261ecSmrg} 33205b261ecSmrg 33305b261ecSmrgstatic int 33405b261ecSmrgSProcRRGetCrtcGammaSize (ClientPtr client) 33505b261ecSmrg{ 3364642e01fSmrg int n; 33705b261ecSmrg REQUEST(xRRGetCrtcGammaSizeReq); 3384642e01fSmrg 33905b261ecSmrg REQUEST_SIZE_MATCH(xRRGetCrtcGammaSizeReq); 3404642e01fSmrg swaps(&stuff->length, n); 3414642e01fSmrg swapl(&stuff->crtc, n); 3424642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 34305b261ecSmrg} 34405b261ecSmrg 34505b261ecSmrgstatic int 34605b261ecSmrgSProcRRGetCrtcGamma (ClientPtr client) 34705b261ecSmrg{ 3484642e01fSmrg int n; 34905b261ecSmrg REQUEST(xRRGetCrtcGammaReq); 3504642e01fSmrg 35105b261ecSmrg REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq); 3524642e01fSmrg swaps(&stuff->length, n); 3534642e01fSmrg swapl(&stuff->crtc, n); 3544642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 35505b261ecSmrg} 35605b261ecSmrg 35705b261ecSmrgstatic int 35805b261ecSmrgSProcRRSetCrtcGamma (ClientPtr client) 35905b261ecSmrg{ 3604642e01fSmrg int n; 36105b261ecSmrg REQUEST(xRRSetCrtcGammaReq); 3624642e01fSmrg 3634642e01fSmrg REQUEST_AT_LEAST_SIZE(xRRSetCrtcGammaReq); 3644642e01fSmrg swaps(&stuff->length, n); 3654642e01fSmrg swapl(&stuff->crtc, n); 3664642e01fSmrg swaps(&stuff->size, n); 3674642e01fSmrg SwapRestS(stuff); 3684642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 3694642e01fSmrg} 3704642e01fSmrg 3714642e01fSmrgstatic int 3724642e01fSmrgSProcRRSetCrtcTransform (ClientPtr client) 3734642e01fSmrg{ 3744642e01fSmrg int n, nparams; 3754642e01fSmrg char *filter; 3764642e01fSmrg CARD32 *params; 3774642e01fSmrg REQUEST(xRRSetCrtcTransformReq); 3784642e01fSmrg 3794642e01fSmrg REQUEST_AT_LEAST_SIZE(xRRSetCrtcTransformReq); 3804642e01fSmrg swaps(&stuff->length, n); 3814642e01fSmrg swapl(&stuff->crtc, n); 3826747b715Smrg SwapLongs((CARD32 *)&stuff->transform, bytes_to_int32(sizeof(xRenderTransform))); 3834642e01fSmrg swaps(&stuff->nbytesFilter, n); 3844642e01fSmrg filter = (char *)(stuff + 1); 3856747b715Smrg params = (CARD32 *) (filter + pad_to_int32(stuff->nbytesFilter)); 3864642e01fSmrg nparams = ((CARD32 *) stuff + client->req_len) - params; 3874642e01fSmrg if (nparams < 0) 3884642e01fSmrg return BadLength; 3894642e01fSmrg 3904642e01fSmrg SwapLongs(params, nparams); 3914642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 3924642e01fSmrg} 3934642e01fSmrg 3944642e01fSmrgstatic int 3954642e01fSmrgSProcRRGetCrtcTransform (ClientPtr client) 3964642e01fSmrg{ 3974642e01fSmrg int n; 3984642e01fSmrg REQUEST(xRRGetCrtcTransformReq); 3994642e01fSmrg 4004642e01fSmrg REQUEST_SIZE_MATCH(xRRGetCrtcTransformReq); 4014642e01fSmrg swaps(&stuff->length, n); 4024642e01fSmrg swapl(&stuff->crtc, n); 4034642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 4044642e01fSmrg} 4054642e01fSmrg 4064642e01fSmrgstatic int 4074642e01fSmrgSProcRRGetPanning (ClientPtr client) 4084642e01fSmrg{ 4094642e01fSmrg int n; 4104642e01fSmrg REQUEST(xRRGetPanningReq); 4114642e01fSmrg 4124642e01fSmrg REQUEST_SIZE_MATCH(xRRGetPanningReq); 4134642e01fSmrg swaps(&stuff->length, n); 4144642e01fSmrg swapl(&stuff->crtc, n); 4154642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 4164642e01fSmrg} 4174642e01fSmrg 4184642e01fSmrgstatic int 4194642e01fSmrgSProcRRSetPanning (ClientPtr client) 4204642e01fSmrg{ 4214642e01fSmrg int n; 4224642e01fSmrg REQUEST(xRRSetPanningReq); 42305b261ecSmrg 4244642e01fSmrg REQUEST_SIZE_MATCH(xRRSetPanningReq); 4254642e01fSmrg swaps(&stuff->length, n); 4264642e01fSmrg swapl(&stuff->crtc, n); 4274642e01fSmrg swapl(&stuff->timestamp, n); 4284642e01fSmrg swaps(&stuff->left, n); 4294642e01fSmrg swaps(&stuff->top, n); 4304642e01fSmrg swaps(&stuff->width, n); 4314642e01fSmrg swaps(&stuff->height, n); 4324642e01fSmrg swaps(&stuff->track_left, n); 4334642e01fSmrg swaps(&stuff->track_top, n); 4344642e01fSmrg swaps(&stuff->track_width, n); 4354642e01fSmrg swaps(&stuff->track_height, n); 4364642e01fSmrg swaps(&stuff->border_left, n); 4374642e01fSmrg swaps(&stuff->border_top, n); 4384642e01fSmrg swaps(&stuff->border_right, n); 4394642e01fSmrg swaps(&stuff->border_bottom, n); 4404642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 4414642e01fSmrg} 4424642e01fSmrg 4434642e01fSmrgstatic int 4444642e01fSmrgSProcRRSetOutputPrimary (ClientPtr client) 4454642e01fSmrg{ 4464642e01fSmrg int n; 4474642e01fSmrg REQUEST(xRRSetOutputPrimaryReq); 4484642e01fSmrg 4494642e01fSmrg REQUEST_SIZE_MATCH(xRRSetOutputPrimaryReq); 4504642e01fSmrg swaps(&stuff->length, n); 4514642e01fSmrg swapl(&stuff->window, n); 4524642e01fSmrg swapl(&stuff->output, n); 4534642e01fSmrg return ProcRandrVector[stuff->randrReqType](client); 4544642e01fSmrg} 4554642e01fSmrg 4564642e01fSmrgstatic int 4574642e01fSmrgSProcRRGetOutputPrimary (ClientPtr client) 4584642e01fSmrg{ 4594642e01fSmrg int n; 4606747b715Smrg REQUEST(xRRGetOutputPrimaryReq); 4614642e01fSmrg 4624642e01fSmrg REQUEST_SIZE_MATCH(xRRGetOutputPrimaryReq); 4634642e01fSmrg swaps(&stuff->length, n); 4644642e01fSmrg swapl(&stuff->window, n); 4654642e01fSmrg return ProcRandrVector[stuff->randrReqType](client); 46605b261ecSmrg} 46705b261ecSmrg 46805b261ecSmrgint (*SProcRandrVector[RRNumberRequests])(ClientPtr) = { 46905b261ecSmrg SProcRRQueryVersion, /* 0 */ 47005b261ecSmrg/* we skip 1 to make old clients fail pretty immediately */ 47105b261ecSmrg NULL, /* 1 SProcRandrOldGetScreenInfo */ 47205b261ecSmrg/* V1.0 apps share the same set screen config request id */ 47305b261ecSmrg SProcRRSetScreenConfig, /* 2 */ 47405b261ecSmrg NULL, /* 3 SProcRandrOldScreenChangeSelectInput */ 47505b261ecSmrg/* 3 used to be ScreenChangeSelectInput; deprecated */ 47605b261ecSmrg SProcRRSelectInput, /* 4 */ 47705b261ecSmrg SProcRRGetScreenInfo, /* 5 */ 47805b261ecSmrg/* V1.2 additions */ 47905b261ecSmrg SProcRRGetScreenSizeRange, /* 6 */ 48005b261ecSmrg SProcRRSetScreenSize, /* 7 */ 48105b261ecSmrg SProcRRGetScreenResources, /* 8 */ 48205b261ecSmrg SProcRRGetOutputInfo, /* 9 */ 48305b261ecSmrg SProcRRListOutputProperties,/* 10 */ 48405b261ecSmrg SProcRRQueryOutputProperty, /* 11 */ 48505b261ecSmrg SProcRRConfigureOutputProperty, /* 12 */ 48605b261ecSmrg SProcRRChangeOutputProperty,/* 13 */ 48705b261ecSmrg SProcRRDeleteOutputProperty,/* 14 */ 48805b261ecSmrg SProcRRGetOutputProperty, /* 15 */ 48905b261ecSmrg SProcRRCreateMode, /* 16 */ 49005b261ecSmrg SProcRRDestroyMode, /* 17 */ 49105b261ecSmrg SProcRRAddOutputMode, /* 18 */ 49205b261ecSmrg SProcRRDeleteOutputMode, /* 19 */ 49305b261ecSmrg SProcRRGetCrtcInfo, /* 20 */ 49405b261ecSmrg SProcRRSetCrtcConfig, /* 21 */ 49505b261ecSmrg SProcRRGetCrtcGammaSize, /* 22 */ 49605b261ecSmrg SProcRRGetCrtcGamma, /* 23 */ 49705b261ecSmrg SProcRRSetCrtcGamma, /* 24 */ 4984642e01fSmrg/* V1.3 additions */ 4994642e01fSmrg SProcRRGetScreenResources, /* 25 GetScreenResourcesCurrent */ 5004642e01fSmrg SProcRRSetCrtcTransform, /* 26 */ 5014642e01fSmrg SProcRRGetCrtcTransform, /* 27 */ 5024642e01fSmrg SProcRRGetPanning, /* 28 */ 5034642e01fSmrg SProcRRSetPanning, /* 29 */ 5044642e01fSmrg SProcRRSetOutputPrimary, /* 30 */ 5054642e01fSmrg SProcRRGetOutputPrimary, /* 31 */ 50605b261ecSmrg}; 50705b261ecSmrg 508