rrsdispatch.c revision 4642e01f
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 3105b261ecSmrg swaps(&stuff->length, n); 3205b261ecSmrg swapl(&stuff->majorVersion, n); 3305b261ecSmrg swapl(&stuff->minorVersion, n); 3405b261ecSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 3505b261ecSmrg} 3605b261ecSmrg 3705b261ecSmrgstatic int 3805b261ecSmrgSProcRRGetScreenInfo (ClientPtr client) 3905b261ecSmrg{ 4005b261ecSmrg register int n; 4105b261ecSmrg REQUEST(xRRGetScreenInfoReq); 4205b261ecSmrg 4305b261ecSmrg swaps(&stuff->length, n); 4405b261ecSmrg swapl(&stuff->window, n); 4505b261ecSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 4605b261ecSmrg} 4705b261ecSmrg 4805b261ecSmrgstatic int 4905b261ecSmrgSProcRRSetScreenConfig (ClientPtr client) 5005b261ecSmrg{ 5105b261ecSmrg register int n; 5205b261ecSmrg REQUEST(xRRSetScreenConfigReq); 5305b261ecSmrg 5405b261ecSmrg if (RRClientKnowsRates (client)) 5505b261ecSmrg { 5605b261ecSmrg REQUEST_SIZE_MATCH (xRRSetScreenConfigReq); 5705b261ecSmrg swaps (&stuff->rate, n); 5805b261ecSmrg } 5905b261ecSmrg else 6005b261ecSmrg { 6105b261ecSmrg REQUEST_SIZE_MATCH (xRR1_0SetScreenConfigReq); 6205b261ecSmrg } 6305b261ecSmrg 6405b261ecSmrg swaps(&stuff->length, n); 6505b261ecSmrg swapl(&stuff->drawable, n); 6605b261ecSmrg swapl(&stuff->timestamp, n); 6705b261ecSmrg swaps(&stuff->sizeID, n); 6805b261ecSmrg swaps(&stuff->rotation, n); 6905b261ecSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 7005b261ecSmrg} 7105b261ecSmrg 7205b261ecSmrgstatic int 7305b261ecSmrgSProcRRSelectInput (ClientPtr client) 7405b261ecSmrg{ 7505b261ecSmrg register int n; 7605b261ecSmrg REQUEST(xRRSelectInputReq); 7705b261ecSmrg 7805b261ecSmrg swaps(&stuff->length, n); 7905b261ecSmrg swapl(&stuff->window, n); 8005b261ecSmrg swaps(&stuff->enable, n); 8105b261ecSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 8205b261ecSmrg} 8305b261ecSmrg 8405b261ecSmrgstatic int 8505b261ecSmrgSProcRRGetScreenSizeRange (ClientPtr client) 8605b261ecSmrg{ 874642e01fSmrg int n; 8805b261ecSmrg REQUEST(xRRGetScreenSizeRangeReq); 894642e01fSmrg 9005b261ecSmrg REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq); 914642e01fSmrg swaps(&stuff->length, n); 924642e01fSmrg swapl(&stuff->window, n); 934642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 9405b261ecSmrg} 9505b261ecSmrg 9605b261ecSmrgstatic int 9705b261ecSmrgSProcRRSetScreenSize (ClientPtr client) 9805b261ecSmrg{ 994642e01fSmrg int n; 10005b261ecSmrg REQUEST(xRRSetScreenSizeReq); 1014642e01fSmrg 10205b261ecSmrg REQUEST_SIZE_MATCH(xRRSetScreenSizeReq); 1034642e01fSmrg swaps(&stuff->length, n); 1044642e01fSmrg swapl(&stuff->window, n); 1054642e01fSmrg swaps(&stuff->width, n); 1064642e01fSmrg swaps(&stuff->height, n); 1074642e01fSmrg swapl(&stuff->widthInMillimeters, n); 1084642e01fSmrg swapl(&stuff->heightInMillimeters, n); 1094642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 11005b261ecSmrg} 11105b261ecSmrg 11205b261ecSmrgstatic int 11305b261ecSmrgSProcRRGetScreenResources (ClientPtr client) 11405b261ecSmrg{ 1154642e01fSmrg int n; 11605b261ecSmrg REQUEST(xRRGetScreenResourcesReq); 1174642e01fSmrg 11805b261ecSmrg REQUEST_SIZE_MATCH(xRRGetScreenResourcesReq); 1194642e01fSmrg swaps(&stuff->length, n); 1204642e01fSmrg swapl(&stuff->window, n); 1214642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 12205b261ecSmrg} 12305b261ecSmrg 12405b261ecSmrgstatic int 12505b261ecSmrgSProcRRGetOutputInfo (ClientPtr client) 12605b261ecSmrg{ 1274642e01fSmrg int n; 1284642e01fSmrg REQUEST(xRRGetOutputInfoReq); 1294642e01fSmrg 13005b261ecSmrg REQUEST_SIZE_MATCH(xRRGetOutputInfoReq); 1314642e01fSmrg swaps(&stuff->length, n); 1324642e01fSmrg swapl(&stuff->output, n); 1334642e01fSmrg swapl(&stuff->configTimestamp, n); 1344642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 13505b261ecSmrg} 13605b261ecSmrg 13705b261ecSmrgstatic int 13805b261ecSmrgSProcRRListOutputProperties (ClientPtr client) 13905b261ecSmrg{ 1404642e01fSmrg int n; 14105b261ecSmrg REQUEST(xRRListOutputPropertiesReq); 1424642e01fSmrg 14305b261ecSmrg REQUEST_SIZE_MATCH(xRRListOutputPropertiesReq); 1444642e01fSmrg swaps(&stuff->length, n); 1454642e01fSmrg swapl(&stuff->output, n); 1464642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 14705b261ecSmrg} 14805b261ecSmrg 14905b261ecSmrgstatic int 15005b261ecSmrgSProcRRQueryOutputProperty (ClientPtr client) 15105b261ecSmrg{ 1524642e01fSmrg int n; 15305b261ecSmrg REQUEST(xRRQueryOutputPropertyReq); 1544642e01fSmrg 15505b261ecSmrg REQUEST_SIZE_MATCH(xRRQueryOutputPropertyReq); 1564642e01fSmrg swaps(&stuff->length, n); 1574642e01fSmrg swapl(&stuff->output, n); 1584642e01fSmrg swapl(&stuff->property, n); 1594642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 16005b261ecSmrg} 16105b261ecSmrg 16205b261ecSmrgstatic int 16305b261ecSmrgSProcRRConfigureOutputProperty (ClientPtr client) 16405b261ecSmrg{ 1654642e01fSmrg int n; 16605b261ecSmrg REQUEST(xRRConfigureOutputPropertyReq); 1674642e01fSmrg 1684642e01fSmrg swaps(&stuff->length, n); 1694642e01fSmrg swapl(&stuff->output, n); 1704642e01fSmrg swapl(&stuff->property, n); 1714642e01fSmrg SwapRestL(stuff); 1724642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 17305b261ecSmrg} 17405b261ecSmrg 17505b261ecSmrgstatic int 17605b261ecSmrgSProcRRChangeOutputProperty (ClientPtr client) 17705b261ecSmrg{ 1784642e01fSmrg int n; 17905b261ecSmrg REQUEST(xRRChangeOutputPropertyReq); 1804642e01fSmrg 1814642e01fSmrg REQUEST_AT_LEAST_SIZE (xRRChangeOutputPropertyReq); 1824642e01fSmrg swaps(&stuff->length, n); 1834642e01fSmrg swapl(&stuff->output, n); 1844642e01fSmrg swapl(&stuff->property, n); 1854642e01fSmrg swapl(&stuff->type, n); 1864642e01fSmrg swapl(&stuff->nUnits, n); 1874642e01fSmrg switch(stuff->format) { 1884642e01fSmrg case 8: 1894642e01fSmrg break; 1904642e01fSmrg case 16: 1914642e01fSmrg SwapRestS(stuff); 1924642e01fSmrg break; 1934642e01fSmrg case 32: 1944642e01fSmrg SwapRestL(stuff); 1954642e01fSmrg break; 1964642e01fSmrg default: 1974642e01fSmrg client->errorValue = stuff->format; 1984642e01fSmrg return BadValue; 1994642e01fSmrg } 2004642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 20105b261ecSmrg} 20205b261ecSmrg 20305b261ecSmrgstatic int 20405b261ecSmrgSProcRRDeleteOutputProperty (ClientPtr client) 20505b261ecSmrg{ 2064642e01fSmrg int n; 20705b261ecSmrg REQUEST(xRRDeleteOutputPropertyReq); 20805b261ecSmrg 20905b261ecSmrg REQUEST_SIZE_MATCH(xRRDeleteOutputPropertyReq); 2104642e01fSmrg swaps(&stuff->length, n); 2114642e01fSmrg swapl(&stuff->output, n); 2124642e01fSmrg swapl(&stuff->property, n); 2134642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 21405b261ecSmrg} 21505b261ecSmrg 21605b261ecSmrgstatic int 21705b261ecSmrgSProcRRGetOutputProperty (ClientPtr client) 21805b261ecSmrg{ 2194642e01fSmrg int n; 22005b261ecSmrg REQUEST(xRRGetOutputPropertyReq); 2214642e01fSmrg 22205b261ecSmrg REQUEST_SIZE_MATCH(xRRGetOutputPropertyReq); 2234642e01fSmrg swaps(&stuff->length, n); 2244642e01fSmrg swapl(&stuff->output, n); 2254642e01fSmrg swapl(&stuff->property, n); 2264642e01fSmrg swapl(&stuff->type, n); 2274642e01fSmrg swapl(&stuff->longOffset, n); 2284642e01fSmrg swapl(&stuff->longLength, n); 2294642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 23005b261ecSmrg} 23105b261ecSmrg 23205b261ecSmrgstatic int 23305b261ecSmrgSProcRRCreateMode (ClientPtr client) 23405b261ecSmrg{ 2354642e01fSmrg int n; 2364642e01fSmrg xRRModeInfo *modeinfo; 23705b261ecSmrg REQUEST(xRRCreateModeReq); 2384642e01fSmrg 2394642e01fSmrg REQUEST_AT_LEAST_SIZE(xRRCreateModeReq); 2404642e01fSmrg swaps(&stuff->length, n); 2414642e01fSmrg swapl(&stuff->window, n); 2424642e01fSmrg 2434642e01fSmrg modeinfo = &stuff->modeInfo; 2444642e01fSmrg swapl(&modeinfo->id, n); 2454642e01fSmrg swaps(&modeinfo->width, n); 2464642e01fSmrg swaps(&modeinfo->height, n); 2474642e01fSmrg swapl(&modeinfo->dotClock, n); 2484642e01fSmrg swaps(&modeinfo->hSyncStart, n); 2494642e01fSmrg swaps(&modeinfo->hSyncEnd, n); 2504642e01fSmrg swaps(&modeinfo->hTotal, n); 2514642e01fSmrg swaps(&modeinfo->vSyncStart, n); 2524642e01fSmrg swaps(&modeinfo->vSyncEnd, n); 2534642e01fSmrg swaps(&modeinfo->vTotal, n); 2544642e01fSmrg swaps(&modeinfo->nameLength, n); 2554642e01fSmrg swapl(&modeinfo->modeFlags, n); 2564642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 25705b261ecSmrg} 25805b261ecSmrg 25905b261ecSmrgstatic int 26005b261ecSmrgSProcRRDestroyMode (ClientPtr client) 26105b261ecSmrg{ 2624642e01fSmrg int n; 26305b261ecSmrg REQUEST(xRRDestroyModeReq); 2644642e01fSmrg 26505b261ecSmrg REQUEST_SIZE_MATCH(xRRDestroyModeReq); 2664642e01fSmrg swaps(&stuff->length, n); 2674642e01fSmrg swapl(&stuff->mode, n); 2684642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 26905b261ecSmrg} 27005b261ecSmrg 27105b261ecSmrgstatic int 27205b261ecSmrgSProcRRAddOutputMode (ClientPtr client) 27305b261ecSmrg{ 2744642e01fSmrg int n; 27505b261ecSmrg REQUEST(xRRAddOutputModeReq); 2764642e01fSmrg 27705b261ecSmrg REQUEST_SIZE_MATCH(xRRAddOutputModeReq); 2784642e01fSmrg swaps(&stuff->length, n); 2794642e01fSmrg swapl(&stuff->output, n); 2804642e01fSmrg swapl(&stuff->mode, n); 2814642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 28205b261ecSmrg} 28305b261ecSmrg 28405b261ecSmrgstatic int 28505b261ecSmrgSProcRRDeleteOutputMode (ClientPtr client) 28605b261ecSmrg{ 2874642e01fSmrg int n; 28805b261ecSmrg REQUEST(xRRDeleteOutputModeReq); 2894642e01fSmrg 29005b261ecSmrg REQUEST_SIZE_MATCH(xRRDeleteOutputModeReq); 2914642e01fSmrg swaps(&stuff->length, n); 2924642e01fSmrg swapl(&stuff->output, n); 2934642e01fSmrg swapl(&stuff->mode, n); 2944642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 29505b261ecSmrg} 29605b261ecSmrg 29705b261ecSmrgstatic int 29805b261ecSmrgSProcRRGetCrtcInfo (ClientPtr client) 29905b261ecSmrg{ 3004642e01fSmrg int n; 30105b261ecSmrg REQUEST(xRRGetCrtcInfoReq); 3024642e01fSmrg 30305b261ecSmrg REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq); 3044642e01fSmrg swaps(&stuff->length, n); 3054642e01fSmrg swapl(&stuff->crtc, n); 3064642e01fSmrg swapl(&stuff->configTimestamp, n); 3074642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 30805b261ecSmrg} 30905b261ecSmrg 31005b261ecSmrgstatic int 31105b261ecSmrgSProcRRSetCrtcConfig (ClientPtr client) 31205b261ecSmrg{ 3134642e01fSmrg int n; 31405b261ecSmrg REQUEST(xRRSetCrtcConfigReq); 3154642e01fSmrg 3164642e01fSmrg REQUEST_AT_LEAST_SIZE(xRRSetCrtcConfigReq); 3174642e01fSmrg swaps(&stuff->length, n); 3184642e01fSmrg swapl(&stuff->crtc, n); 3194642e01fSmrg swapl(&stuff->timestamp, n); 3204642e01fSmrg swapl(&stuff->configTimestamp, n); 3214642e01fSmrg swaps(&stuff->x, n); 3224642e01fSmrg swaps(&stuff->y, n); 3234642e01fSmrg swapl(&stuff->mode, n); 3244642e01fSmrg swaps(&stuff->rotation, n); 3254642e01fSmrg SwapRestL(stuff); 3264642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 32705b261ecSmrg} 32805b261ecSmrg 32905b261ecSmrgstatic int 33005b261ecSmrgSProcRRGetCrtcGammaSize (ClientPtr client) 33105b261ecSmrg{ 3324642e01fSmrg int n; 33305b261ecSmrg REQUEST(xRRGetCrtcGammaSizeReq); 3344642e01fSmrg 33505b261ecSmrg REQUEST_SIZE_MATCH(xRRGetCrtcGammaSizeReq); 3364642e01fSmrg swaps(&stuff->length, n); 3374642e01fSmrg swapl(&stuff->crtc, n); 3384642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 33905b261ecSmrg} 34005b261ecSmrg 34105b261ecSmrgstatic int 34205b261ecSmrgSProcRRGetCrtcGamma (ClientPtr client) 34305b261ecSmrg{ 3444642e01fSmrg int n; 34505b261ecSmrg REQUEST(xRRGetCrtcGammaReq); 3464642e01fSmrg 34705b261ecSmrg REQUEST_SIZE_MATCH(xRRGetCrtcGammaReq); 3484642e01fSmrg swaps(&stuff->length, n); 3494642e01fSmrg swapl(&stuff->crtc, n); 3504642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 35105b261ecSmrg} 35205b261ecSmrg 35305b261ecSmrgstatic int 35405b261ecSmrgSProcRRSetCrtcGamma (ClientPtr client) 35505b261ecSmrg{ 3564642e01fSmrg int n; 35705b261ecSmrg REQUEST(xRRSetCrtcGammaReq); 3584642e01fSmrg 3594642e01fSmrg REQUEST_AT_LEAST_SIZE(xRRSetCrtcGammaReq); 3604642e01fSmrg swaps(&stuff->length, n); 3614642e01fSmrg swapl(&stuff->crtc, n); 3624642e01fSmrg swaps(&stuff->size, n); 3634642e01fSmrg SwapRestS(stuff); 3644642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 3654642e01fSmrg} 3664642e01fSmrg 3674642e01fSmrgstatic int 3684642e01fSmrgSProcRRSetCrtcTransform (ClientPtr client) 3694642e01fSmrg{ 3704642e01fSmrg int n, nparams; 3714642e01fSmrg char *filter; 3724642e01fSmrg CARD32 *params; 3734642e01fSmrg REQUEST(xRRSetCrtcTransformReq); 3744642e01fSmrg 3754642e01fSmrg REQUEST_AT_LEAST_SIZE(xRRSetCrtcTransformReq); 3764642e01fSmrg swaps(&stuff->length, n); 3774642e01fSmrg swapl(&stuff->crtc, n); 3784642e01fSmrg SwapLongs((CARD32 *)&stuff->transform, (sizeof(xRenderTransform)) >> 2); 3794642e01fSmrg swaps(&stuff->nbytesFilter, n); 3804642e01fSmrg filter = (char *)(stuff + 1); 3814642e01fSmrg params = (CARD32 *) (filter + ((stuff->nbytesFilter + 3) & ~3)); 3824642e01fSmrg nparams = ((CARD32 *) stuff + client->req_len) - params; 3834642e01fSmrg if (nparams < 0) 3844642e01fSmrg return BadLength; 3854642e01fSmrg 3864642e01fSmrg SwapLongs(params, nparams); 3874642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 3884642e01fSmrg} 3894642e01fSmrg 3904642e01fSmrgstatic int 3914642e01fSmrgSProcRRGetCrtcTransform (ClientPtr client) 3924642e01fSmrg{ 3934642e01fSmrg int n; 3944642e01fSmrg REQUEST(xRRGetCrtcTransformReq); 3954642e01fSmrg 3964642e01fSmrg REQUEST_SIZE_MATCH(xRRGetCrtcTransformReq); 3974642e01fSmrg swaps(&stuff->length, n); 3984642e01fSmrg swapl(&stuff->crtc, n); 3994642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 4004642e01fSmrg} 4014642e01fSmrg 4024642e01fSmrgstatic int 4034642e01fSmrgSProcRRGetPanning (ClientPtr client) 4044642e01fSmrg{ 4054642e01fSmrg int n; 4064642e01fSmrg REQUEST(xRRGetPanningReq); 4074642e01fSmrg 4084642e01fSmrg REQUEST_SIZE_MATCH(xRRGetPanningReq); 4094642e01fSmrg swaps(&stuff->length, n); 4104642e01fSmrg swapl(&stuff->crtc, n); 4114642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 4124642e01fSmrg} 4134642e01fSmrg 4144642e01fSmrgstatic int 4154642e01fSmrgSProcRRSetPanning (ClientPtr client) 4164642e01fSmrg{ 4174642e01fSmrg int n; 4184642e01fSmrg REQUEST(xRRSetPanningReq); 41905b261ecSmrg 4204642e01fSmrg REQUEST_SIZE_MATCH(xRRSetPanningReq); 4214642e01fSmrg swaps(&stuff->length, n); 4224642e01fSmrg swapl(&stuff->crtc, n); 4234642e01fSmrg swapl(&stuff->timestamp, n); 4244642e01fSmrg swaps(&stuff->left, n); 4254642e01fSmrg swaps(&stuff->top, n); 4264642e01fSmrg swaps(&stuff->width, n); 4274642e01fSmrg swaps(&stuff->height, n); 4284642e01fSmrg swaps(&stuff->track_left, n); 4294642e01fSmrg swaps(&stuff->track_top, n); 4304642e01fSmrg swaps(&stuff->track_width, n); 4314642e01fSmrg swaps(&stuff->track_height, n); 4324642e01fSmrg swaps(&stuff->border_left, n); 4334642e01fSmrg swaps(&stuff->border_top, n); 4344642e01fSmrg swaps(&stuff->border_right, n); 4354642e01fSmrg swaps(&stuff->border_bottom, n); 4364642e01fSmrg return (*ProcRandrVector[stuff->randrReqType]) (client); 4374642e01fSmrg} 4384642e01fSmrg 4394642e01fSmrgstatic int 4404642e01fSmrgSProcRRSetOutputPrimary (ClientPtr client) 4414642e01fSmrg{ 4424642e01fSmrg int n; 4434642e01fSmrg REQUEST(xRRSetOutputPrimaryReq); 4444642e01fSmrg 4454642e01fSmrg REQUEST_SIZE_MATCH(xRRSetOutputPrimaryReq); 4464642e01fSmrg swaps(&stuff->length, n); 4474642e01fSmrg swapl(&stuff->window, n); 4484642e01fSmrg swapl(&stuff->output, n); 4494642e01fSmrg return ProcRandrVector[stuff->randrReqType](client); 4504642e01fSmrg} 4514642e01fSmrg 4524642e01fSmrgstatic int 4534642e01fSmrgSProcRRGetOutputPrimary (ClientPtr client) 4544642e01fSmrg{ 4554642e01fSmrg int n; 4564642e01fSmrg REQUEST(xRRSetOutputPrimaryReq); 4574642e01fSmrg 4584642e01fSmrg REQUEST_SIZE_MATCH(xRRGetOutputPrimaryReq); 4594642e01fSmrg swaps(&stuff->length, n); 4604642e01fSmrg swapl(&stuff->window, n); 4614642e01fSmrg return ProcRandrVector[stuff->randrReqType](client); 46205b261ecSmrg} 46305b261ecSmrg 46405b261ecSmrgint (*SProcRandrVector[RRNumberRequests])(ClientPtr) = { 46505b261ecSmrg SProcRRQueryVersion, /* 0 */ 46605b261ecSmrg/* we skip 1 to make old clients fail pretty immediately */ 46705b261ecSmrg NULL, /* 1 SProcRandrOldGetScreenInfo */ 46805b261ecSmrg/* V1.0 apps share the same set screen config request id */ 46905b261ecSmrg SProcRRSetScreenConfig, /* 2 */ 47005b261ecSmrg NULL, /* 3 SProcRandrOldScreenChangeSelectInput */ 47105b261ecSmrg/* 3 used to be ScreenChangeSelectInput; deprecated */ 47205b261ecSmrg SProcRRSelectInput, /* 4 */ 47305b261ecSmrg SProcRRGetScreenInfo, /* 5 */ 47405b261ecSmrg/* V1.2 additions */ 47505b261ecSmrg SProcRRGetScreenSizeRange, /* 6 */ 47605b261ecSmrg SProcRRSetScreenSize, /* 7 */ 47705b261ecSmrg SProcRRGetScreenResources, /* 8 */ 47805b261ecSmrg SProcRRGetOutputInfo, /* 9 */ 47905b261ecSmrg SProcRRListOutputProperties,/* 10 */ 48005b261ecSmrg SProcRRQueryOutputProperty, /* 11 */ 48105b261ecSmrg SProcRRConfigureOutputProperty, /* 12 */ 48205b261ecSmrg SProcRRChangeOutputProperty,/* 13 */ 48305b261ecSmrg SProcRRDeleteOutputProperty,/* 14 */ 48405b261ecSmrg SProcRRGetOutputProperty, /* 15 */ 48505b261ecSmrg SProcRRCreateMode, /* 16 */ 48605b261ecSmrg SProcRRDestroyMode, /* 17 */ 48705b261ecSmrg SProcRRAddOutputMode, /* 18 */ 48805b261ecSmrg SProcRRDeleteOutputMode, /* 19 */ 48905b261ecSmrg SProcRRGetCrtcInfo, /* 20 */ 49005b261ecSmrg SProcRRSetCrtcConfig, /* 21 */ 49105b261ecSmrg SProcRRGetCrtcGammaSize, /* 22 */ 49205b261ecSmrg SProcRRGetCrtcGamma, /* 23 */ 49305b261ecSmrg SProcRRSetCrtcGamma, /* 24 */ 4944642e01fSmrg/* V1.3 additions */ 4954642e01fSmrg SProcRRGetScreenResources, /* 25 GetScreenResourcesCurrent */ 4964642e01fSmrg SProcRRSetCrtcTransform, /* 26 */ 4974642e01fSmrg SProcRRGetCrtcTransform, /* 27 */ 4984642e01fSmrg SProcRRGetPanning, /* 28 */ 4994642e01fSmrg SProcRRSetPanning, /* 29 */ 5004642e01fSmrg SProcRRSetOutputPrimary, /* 30 */ 5014642e01fSmrg SProcRRGetOutputPrimary, /* 31 */ 50205b261ecSmrg}; 50305b261ecSmrg 504