diff --git a/Xext/vidmode.c b/Xext/vidmode.c index 1a4e02c9a..85050c832 100644 --- a/Xext/vidmode.c +++ b/Xext/vidmode.c @@ -36,6 +36,9 @@ from Kaleb S. KEITHLEY #include #include #include + +#include "dix/request_priv.h" + #include "misc.h" #include "dixstruct.h" #include "extnsionst.h" @@ -191,7 +194,7 @@ static int ProcVidModeQueryVersion(ClientPtr client) { DEBUG_P("XF86VidModeQueryVersion"); - REQUEST_SIZE_MATCH(xXF86VidModeQueryVersionReq); + REQUEST_HEAD_STRUCT(xXF86VidModeQueryVersionReq); xXF86VidModeQueryVersionReply rep = { .type = X_Reply, @@ -214,7 +217,9 @@ ProcVidModeQueryVersion(ClientPtr client) static int ProcVidModeGetModeLine(ClientPtr client) { - REQUEST(xXF86VidModeGetModeLineReq); + REQUEST_HEAD_STRUCT(xXF86VidModeGetModeLineReq); + REQUEST_FIELD_CARD16(screen); + ScreenPtr pScreen; VidModePtr pVidMode; DisplayModePtr mode; @@ -379,7 +384,9 @@ static char *fillModeInfoV2(ClientPtr client, char *buf, int dotClock, DisplayMo static int ProcVidModeGetAllModeLines(ClientPtr client) { - REQUEST(xXF86VidModeGetAllModeLinesReq); + REQUEST_HEAD_STRUCT(xXF86VidModeGetAllModeLinesReq); + REQUEST_FIELD_CARD16(screen); + ScreenPtr pScreen; VidModePtr pVidMode; DisplayModePtr mode; @@ -388,8 +395,6 @@ ProcVidModeGetAllModeLines(ClientPtr client) DEBUG_P("XF86VidModeGetAllModelines"); - REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq); - if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -461,11 +466,24 @@ ProcVidModeAddModeLine(ClientPtr client) DEBUG_P("XF86VidModeAddModeline"); if (ClientMajorVersion(client) < 2) { - REQUEST(xXF86OldVidModeAddModeLineReq); - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq); + REQUEST_HEAD_AT_LEAST(xXF86OldVidModeAddModeLineReq); len = client->req_len - bytes_to_int32(sizeof(xXF86OldVidModeAddModeLineReq)); + + REQUEST_FIELD_CARD32(screen); + REQUEST_FIELD_CARD16(hdisplay); + REQUEST_FIELD_CARD16(hsyncstart); + REQUEST_FIELD_CARD16(hsyncend); + REQUEST_FIELD_CARD16(htotal); + REQUEST_FIELD_CARD16(vdisplay); + REQUEST_FIELD_CARD16(vsyncstart); + REQUEST_FIELD_CARD16(vsyncend); + REQUEST_FIELD_CARD16(vtotal); + REQUEST_FIELD_CARD32(flags); + REQUEST_FIELD_CARD32(privsize); + REQUEST_REST_CARD32(); + if (len != stuff->privsize) return BadLength; @@ -499,13 +517,29 @@ ProcVidModeAddModeLine(ClientPtr client) return VidModeAddModeLine(client, &newstuff); } else { - REQUEST(xXF86VidModeAddModeLineReq); - REQUEST_AT_LEAST_SIZE(xXF86VidModeAddModeLineReq); + REQUEST_HEAD_AT_LEAST(xXF86VidModeAddModeLineReq); len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeAddModeLineReq)); + + REQUEST_FIELD_CARD16(length); + REQUEST_FIELD_CARD32(screen); + REQUEST_FIELD_CARD16(hdisplay); + REQUEST_FIELD_CARD16(hsyncstart); + REQUEST_FIELD_CARD16(hsyncend); + REQUEST_FIELD_CARD16(htotal); + REQUEST_FIELD_CARD16(hskew); + REQUEST_FIELD_CARD16(vdisplay); + REQUEST_FIELD_CARD16(vsyncstart); + REQUEST_FIELD_CARD16(vsyncend); + REQUEST_FIELD_CARD16(vtotal); + REQUEST_FIELD_CARD32(flags); + REQUEST_FIELD_CARD32(privsize); + REQUEST_REST_CARD32(); + if (len != stuff->privsize) return BadLength; + return VidModeAddModeLine(client, stuff); } } @@ -640,8 +674,20 @@ ProcVidModeDeleteModeLine(ClientPtr client) DEBUG_P("XF86VidModeDeleteModeline"); if (ClientMajorVersion(client) < 2) { - REQUEST(xXF86OldVidModeDeleteModeLineReq); - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq); + REQUEST_HEAD_AT_LEAST(xXF86OldVidModeDeleteModeLineReq); + REQUEST_FIELD_CARD32(screen); + REQUEST_FIELD_CARD16(hdisplay); + REQUEST_FIELD_CARD16(hsyncstart); + REQUEST_FIELD_CARD16(hsyncend); + REQUEST_FIELD_CARD16(htotal); + REQUEST_FIELD_CARD16(vdisplay); + REQUEST_FIELD_CARD16(vsyncstart); + REQUEST_FIELD_CARD16(vsyncend); + REQUEST_FIELD_CARD16(vtotal); + REQUEST_FIELD_CARD32(flags); + REQUEST_FIELD_CARD32(privsize); + REQUEST_REST_CARD32(); + len = client->req_len - bytes_to_int32(sizeof(xXF86OldVidModeDeleteModeLineReq)); @@ -674,8 +720,21 @@ ProcVidModeDeleteModeLine(ClientPtr client) return VidModeDeleteModeLine(client, &newstuff); } else { - REQUEST(xXF86VidModeDeleteModeLineReq); - REQUEST_AT_LEAST_SIZE(xXF86VidModeDeleteModeLineReq); + REQUEST_HEAD_AT_LEAST(xXF86VidModeDeleteModeLineReq); + REQUEST_FIELD_CARD32(screen); + REQUEST_FIELD_CARD16(hdisplay); + REQUEST_FIELD_CARD16(hsyncstart); + REQUEST_FIELD_CARD16(hsyncend); + REQUEST_FIELD_CARD16(htotal); + REQUEST_FIELD_CARD16(hskew); + REQUEST_FIELD_CARD16(vdisplay); + REQUEST_FIELD_CARD16(vsyncstart); + REQUEST_FIELD_CARD16(vsyncend); + REQUEST_FIELD_CARD16(vtotal); + REQUEST_FIELD_CARD32(flags); + REQUEST_FIELD_CARD32(privsize); + REQUEST_REST_CARD32(); + len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeDeleteModeLineReq)); @@ -779,8 +838,20 @@ ProcVidModeModModeLine(ClientPtr client) DEBUG_P("XF86VidModeModModeline"); if (ClientMajorVersion(client) < 2) { - REQUEST(xXF86OldVidModeModModeLineReq) - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq); + REQUEST_HEAD_AT_LEAST(xXF86OldVidModeModModeLineReq) + REQUEST_FIELD_CARD32(screen); + REQUEST_FIELD_CARD16(hdisplay); + REQUEST_FIELD_CARD16(hsyncstart); + REQUEST_FIELD_CARD16(hsyncend); + REQUEST_FIELD_CARD16(htotal); + REQUEST_FIELD_CARD16(vdisplay); + REQUEST_FIELD_CARD16(vsyncstart); + REQUEST_FIELD_CARD16(vsyncend); + REQUEST_FIELD_CARD16(vtotal); + REQUEST_FIELD_CARD32(flags); + REQUEST_FIELD_CARD32(privsize); + REQUEST_REST_CARD32(); + int len = client->req_len - bytes_to_int32(sizeof(xXF86OldVidModeModModeLineReq)); @@ -806,8 +877,21 @@ ProcVidModeModModeLine(ClientPtr client) return VidModeModModeLine(client, &newstuff); } else { - REQUEST(xXF86VidModeModModeLineReq); - REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq); + REQUEST_HEAD_AT_LEAST(xXF86VidModeModModeLineReq); + REQUEST_FIELD_CARD32(screen); + REQUEST_FIELD_CARD16(hdisplay); + REQUEST_FIELD_CARD16(hsyncstart); + REQUEST_FIELD_CARD16(hsyncend); + REQUEST_FIELD_CARD16(htotal); + REQUEST_FIELD_CARD16(hskew); + REQUEST_FIELD_CARD16(vdisplay); + REQUEST_FIELD_CARD16(vsyncstart); + REQUEST_FIELD_CARD16(vsyncend); + REQUEST_FIELD_CARD16(vtotal); + REQUEST_FIELD_CARD32(flags); + REQUEST_FIELD_CARD32(privsize); + REQUEST_REST_CARD32(); + int len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeModModeLineReq)); @@ -923,8 +1007,20 @@ ProcVidModeValidateModeLine(ClientPtr client) DEBUG_P("XF86VidModeValidateModeline"); if (ClientMajorVersion(client) < 2) { - REQUEST(xXF86OldVidModeValidateModeLineReq); - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq); + REQUEST_HEAD_AT_LEAST(xXF86OldVidModeValidateModeLineReq); + REQUEST_FIELD_CARD32(screen); + REQUEST_FIELD_CARD16(hdisplay); + REQUEST_FIELD_CARD16(hsyncstart); + REQUEST_FIELD_CARD16(hsyncend); + REQUEST_FIELD_CARD16(htotal); + REQUEST_FIELD_CARD16(vdisplay); + REQUEST_FIELD_CARD16(vsyncstart); + REQUEST_FIELD_CARD16(vsyncend); + REQUEST_FIELD_CARD16(vtotal); + REQUEST_FIELD_CARD32(flags); + REQUEST_FIELD_CARD32(privsize); + REQUEST_REST_CARD32(); + len = client->req_len - bytes_to_int32(sizeof(xXF86OldVidModeValidateModeLineReq)); if (len != stuff->privsize) @@ -949,8 +1045,21 @@ ProcVidModeValidateModeLine(ClientPtr client) return VidModeValidateModeLine(client, &newstuff); } else { - REQUEST(xXF86VidModeValidateModeLineReq); - REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq); + REQUEST_HEAD_AT_LEAST(xXF86VidModeValidateModeLineReq); + REQUEST_FIELD_CARD32(screen); + REQUEST_FIELD_CARD16(hdisplay); + REQUEST_FIELD_CARD16(hsyncstart); + REQUEST_FIELD_CARD16(hsyncend); + REQUEST_FIELD_CARD16(htotal); + REQUEST_FIELD_CARD16(hskew); + REQUEST_FIELD_CARD16(vdisplay); + REQUEST_FIELD_CARD16(vsyncstart); + REQUEST_FIELD_CARD16(vsyncend); + REQUEST_FIELD_CARD16(vtotal); + REQUEST_FIELD_CARD32(flags); + REQUEST_FIELD_CARD32(privsize); + REQUEST_REST_CARD32(); + len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeValidateModeLineReq)); @@ -1051,14 +1160,15 @@ VidModeValidateModeLine(ClientPtr client, xXF86VidModeValidateModeLineReq *stuff static int ProcVidModeSwitchMode(ClientPtr client) { - REQUEST(xXF86VidModeSwitchModeReq); + REQUEST_HEAD_STRUCT(xXF86VidModeSwitchModeReq); + REQUEST_FIELD_CARD16(screen); + REQUEST_FIELD_CARD16(zoom); + ScreenPtr pScreen; VidModePtr pVidMode; DEBUG_P("XF86VidModeSwitchMode"); - REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq); - /* limited to local-only connections */ if (!VidModeAllowNonLocal && !client->local) return VidModeErrorBase + XF86VidModeClientNotLocal; @@ -1091,8 +1201,9 @@ ProcVidModeSwitchToMode(ClientPtr client) return VidModeErrorBase + XF86VidModeClientNotLocal; if (ClientMajorVersion(client) < 2) { - REQUEST(xXF86OldVidModeSwitchToModeReq); - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeSwitchToModeReq); + REQUEST_HEAD_AT_LEAST(xXF86OldVidModeSwitchToModeReq); + REQUEST_FIELD_CARD32(screen); + len = client->req_len - bytes_to_int32(sizeof(xXF86OldVidModeSwitchToModeReq)); @@ -1118,8 +1229,9 @@ ProcVidModeSwitchToMode(ClientPtr client) return VidModeSwitchToMode(client, &newstuff); } else { - REQUEST(xXF86VidModeSwitchToModeReq); - REQUEST_AT_LEAST_SIZE(xXF86VidModeSwitchToModeReq); + REQUEST_HEAD_AT_LEAST(xXF86VidModeSwitchToModeReq); + REQUEST_FIELD_CARD32(screen); + len = client->req_len - bytes_to_int32(sizeof(xXF86VidModeSwitchToModeReq)); @@ -1196,12 +1308,13 @@ VidModeSwitchToMode(ClientPtr client, xXF86VidModeSwitchToModeReq *stuff) static int ProcVidModeLockModeSwitch(ClientPtr client) { - REQUEST(xXF86VidModeLockModeSwitchReq); + REQUEST_HEAD_STRUCT(xXF86VidModeLockModeSwitchReq); + REQUEST_FIELD_CARD16(screen); + REQUEST_FIELD_CARD16(lock); + ScreenPtr pScreen; VidModePtr pVidMode; - REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq); - DEBUG_P("XF86VidModeLockModeSwitch"); /* limited to local-only connections */ @@ -1225,16 +1338,15 @@ ProcVidModeLockModeSwitch(ClientPtr client) static int ProcVidModeGetMonitor(ClientPtr client) { - REQUEST(xXF86VidModeGetMonitorReq); - CARD32 *hsyncdata, *vsyncdata; + REQUEST_HEAD_STRUCT(xXF86VidModeGetMonitorReq); + REQUEST_FIELD_CARD16(screen); + ScreenPtr pScreen; VidModePtr pVidMode; int i, nHsync, nVrefresh, vendorLength = 0, modelLength = 0; DEBUG_P("XF86VidModeGetMonitor"); - REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq); - if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1274,7 +1386,7 @@ ProcVidModeGetMonitor(ClientPtr client) if (!hsyncdata) { return BadAlloc; } - vsyncdata = &hsyncdata[nHsync]; + CARD32 *vsyncdata = &hsyncdata[nHsync]; for (i = 0; i < nHsync; i++) { hsyncdata[i] = (unsigned short) (pVidMode->GetMonitorValue(pScreen, @@ -1308,15 +1420,15 @@ ProcVidModeGetMonitor(ClientPtr client) static int ProcVidModeGetViewPort(ClientPtr client) { - REQUEST(xXF86VidModeGetViewPortReq); + REQUEST_HEAD_STRUCT(xXF86VidModeGetViewPortReq); + REQUEST_FIELD_CARD16(screen); + ScreenPtr pScreen; VidModePtr pVidMode; int x, y; DEBUG_P("XF86VidModeGetViewPort"); - REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq); - if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1347,14 +1459,16 @@ ProcVidModeGetViewPort(ClientPtr client) static int ProcVidModeSetViewPort(ClientPtr client) { - REQUEST(xXF86VidModeSetViewPortReq); + REQUEST_HEAD_STRUCT(xXF86VidModeSetViewPortReq); + REQUEST_FIELD_CARD16(screen); + REQUEST_FIELD_CARD32(x); + REQUEST_FIELD_CARD32(y); + ScreenPtr pScreen; VidModePtr pVidMode; DEBUG_P("XF86VidModeSetViewPort"); - REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq); - /* limited to local-only connections */ if (!VidModeAllowNonLocal && !client->local) return VidModeErrorBase + XF86VidModeClientNotLocal; @@ -1376,7 +1490,9 @@ ProcVidModeSetViewPort(ClientPtr client) static int ProcVidModeGetDotClocks(ClientPtr client) { - REQUEST(xXF86VidModeGetDotClocksReq); + REQUEST_HEAD_STRUCT(xXF86VidModeGetDotClocksReq); + REQUEST_FIELD_CARD16(screen); + ScreenPtr pScreen; VidModePtr pVidMode; int n; @@ -1387,8 +1503,6 @@ ProcVidModeGetDotClocks(ClientPtr client) DEBUG_P("XF86VidModeGetDotClocks"); - REQUEST_SIZE_MATCH(xXF86VidModeGetDotClocksReq); - if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1441,14 +1555,17 @@ ProcVidModeGetDotClocks(ClientPtr client) static int ProcVidModeSetGamma(ClientPtr client) { - REQUEST(xXF86VidModeSetGammaReq); + REQUEST_HEAD_STRUCT(xXF86VidModeSetGammaReq); + REQUEST_FIELD_CARD16(screen); + REQUEST_FIELD_CARD32(red); + REQUEST_FIELD_CARD32(green); + REQUEST_FIELD_CARD32(blue); + ScreenPtr pScreen; VidModePtr pVidMode; DEBUG_P("XF86VidModeSetGamma"); - REQUEST_SIZE_MATCH(xXF86VidModeSetGammaReq); - /* limited to local-only connections */ if (!VidModeAllowNonLocal && !client->local) return VidModeErrorBase + XF86VidModeClientNotLocal; @@ -1472,15 +1589,15 @@ ProcVidModeSetGamma(ClientPtr client) static int ProcVidModeGetGamma(ClientPtr client) { - REQUEST(xXF86VidModeGetGammaReq); + REQUEST_HEAD_STRUCT(xXF86VidModeGetGammaReq); + REQUEST_FIELD_CARD16(screen); + ScreenPtr pScreen; VidModePtr pVidMode; float red, green, blue; DEBUG_P("XF86VidModeGetGamma"); - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaReq); - if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1514,6 +1631,14 @@ ProcVidModeGetGamma(ClientPtr client) static int ProcVidModeSetGammaRamp(ClientPtr client) { + REQUEST_HEAD_AT_LEAST(xXF86VidModeSetGammaRampReq); + REQUEST_FIELD_CARD16(size); + REQUEST_FIELD_CARD16(screen); + + int l = ((stuff->size + 1) & ~1) * 6; + REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, l); + REQUEST_REST_CARD16(); + CARD16 *r, *g, *b; int length; ScreenPtr pScreen; @@ -1523,9 +1648,6 @@ ProcVidModeSetGammaRamp(ClientPtr client) if (!VidModeAllowNonLocal && !client->local) return VidModeErrorBase + XF86VidModeClientNotLocal; - REQUEST(xXF86VidModeSetGammaRampReq); - REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq); - if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1554,16 +1676,16 @@ ProcVidModeSetGammaRamp(ClientPtr client) static int ProcVidModeGetGammaRamp(ClientPtr client) { + REQUEST_HEAD_STRUCT(xXF86VidModeGetGammaRampReq); + REQUEST_FIELD_CARD16(size); + REQUEST_FIELD_CARD16(screen); + CARD16 *ramp = NULL; int length; size_t ramplen = 0; ScreenPtr pScreen; VidModePtr pVidMode; - REQUEST(xXF86VidModeGetGammaRampReq); - - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampReq); - if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1615,13 +1737,12 @@ ProcVidModeGetGammaRamp(ClientPtr client) static int ProcVidModeGetGammaRampSize(ClientPtr client) { + REQUEST_HEAD_STRUCT(xXF86VidModeGetGammaRampSizeReq); + REQUEST_FIELD_CARD16(screen); + ScreenPtr pScreen; VidModePtr pVidMode; - REQUEST(xXF86VidModeGetGammaRampSizeReq); - - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampSizeReq); - if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1648,8 +1769,8 @@ ProcVidModeGetGammaRampSize(ClientPtr client) static int ProcVidModeGetPermissions(ClientPtr client) { - REQUEST(xXF86VidModeGetPermissionsReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetPermissionsReq); + REQUEST_HEAD_STRUCT(xXF86VidModeGetPermissionsReq); + REQUEST_FIELD_CARD16(screen); if (stuff->screen >= screenInfo.numScreens) return BadValue; @@ -1675,14 +1796,14 @@ ProcVidModeGetPermissions(ClientPtr client) static int ProcVidModeSetClientVersion(ClientPtr client) { - REQUEST(xXF86VidModeSetClientVersionReq); + REQUEST_HEAD_STRUCT(xXF86VidModeSetClientVersionReq); + REQUEST_FIELD_CARD16(major); + REQUEST_FIELD_CARD16(minor); VidModePrivPtr pPriv; DEBUG_P("XF86VidModeSetClientVersion"); - REQUEST_SIZE_MATCH(xXF86VidModeSetClientVersionReq); - if ((pPriv = VM_GETPRIV(client)) == NULL) { pPriv = calloc(1, sizeof(VidModePrivRec)); if (!pPriv) @@ -1696,6 +1817,7 @@ ProcVidModeSetClientVersion(ClientPtr client) return Success; } + static int ProcVidModeDispatch(ClientPtr client) { @@ -1748,389 +1870,6 @@ ProcVidModeDispatch(ClientPtr client) } } -static int _X_COLD -SProcVidModeGetModeLine(ClientPtr client) -{ - REQUEST(xXF86VidModeGetModeLineReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq); - swaps(&stuff->screen); - return ProcVidModeGetModeLine(client); -} - -static int _X_COLD -SProcVidModeGetAllModeLines(ClientPtr client) -{ - REQUEST(xXF86VidModeGetAllModeLinesReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq); - swaps(&stuff->screen); - return ProcVidModeGetAllModeLines(client); -} - -static int _X_COLD -SProcVidModeAddModeLine(ClientPtr client) -{ - xXF86OldVidModeAddModeLineReq *oldstuff = - (xXF86OldVidModeAddModeLineReq *) client->requestBuffer; - int ver; - - REQUEST(xXF86VidModeAddModeLineReq); - ver = ClientMajorVersion(client); - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq); - swapl(&oldstuff->screen); - swaps(&oldstuff->hdisplay); - swaps(&oldstuff->hsyncstart); - swaps(&oldstuff->hsyncend); - swaps(&oldstuff->htotal); - swaps(&oldstuff->vdisplay); - swaps(&oldstuff->vsyncstart); - swaps(&oldstuff->vsyncend); - swaps(&oldstuff->vtotal); - swapl(&oldstuff->flags); - swapl(&oldstuff->privsize); - SwapRestL(oldstuff); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeAddModeLineReq); - swapl(&stuff->screen); - swaps(&stuff->hdisplay); - swaps(&stuff->hsyncstart); - swaps(&stuff->hsyncend); - swaps(&stuff->htotal); - swaps(&stuff->hskew); - swaps(&stuff->vdisplay); - swaps(&stuff->vsyncstart); - swaps(&stuff->vsyncend); - swaps(&stuff->vtotal); - swapl(&stuff->flags); - swapl(&stuff->privsize); - SwapRestL(stuff); - } - return ProcVidModeAddModeLine(client); -} - -static int _X_COLD -SProcVidModeDeleteModeLine(ClientPtr client) -{ - xXF86OldVidModeDeleteModeLineReq *oldstuff = - (xXF86OldVidModeDeleteModeLineReq *) client->requestBuffer; - int ver; - - REQUEST(xXF86VidModeDeleteModeLineReq); - ver = ClientMajorVersion(client); - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq); - swapl(&oldstuff->screen); - swaps(&oldstuff->hdisplay); - swaps(&oldstuff->hsyncstart); - swaps(&oldstuff->hsyncend); - swaps(&oldstuff->htotal); - swaps(&oldstuff->vdisplay); - swaps(&oldstuff->vsyncstart); - swaps(&oldstuff->vsyncend); - swaps(&oldstuff->vtotal); - swapl(&oldstuff->flags); - swapl(&oldstuff->privsize); - SwapRestL(oldstuff); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeDeleteModeLineReq); - swapl(&stuff->screen); - swaps(&stuff->hdisplay); - swaps(&stuff->hsyncstart); - swaps(&stuff->hsyncend); - swaps(&stuff->htotal); - swaps(&stuff->hskew); - swaps(&stuff->vdisplay); - swaps(&stuff->vsyncstart); - swaps(&stuff->vsyncend); - swaps(&stuff->vtotal); - swapl(&stuff->flags); - swapl(&stuff->privsize); - SwapRestL(stuff); - } - return ProcVidModeDeleteModeLine(client); -} - -static int _X_COLD -SProcVidModeModModeLine(ClientPtr client) -{ - xXF86OldVidModeModModeLineReq *oldstuff = - (xXF86OldVidModeModModeLineReq *) client->requestBuffer; - int ver; - - REQUEST(xXF86VidModeModModeLineReq); - ver = ClientMajorVersion(client); - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq); - swapl(&oldstuff->screen); - swaps(&oldstuff->hdisplay); - swaps(&oldstuff->hsyncstart); - swaps(&oldstuff->hsyncend); - swaps(&oldstuff->htotal); - swaps(&oldstuff->vdisplay); - swaps(&oldstuff->vsyncstart); - swaps(&oldstuff->vsyncend); - swaps(&oldstuff->vtotal); - swapl(&oldstuff->flags); - swapl(&oldstuff->privsize); - SwapRestL(oldstuff); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq); - swapl(&stuff->screen); - swaps(&stuff->hdisplay); - swaps(&stuff->hsyncstart); - swaps(&stuff->hsyncend); - swaps(&stuff->htotal); - swaps(&stuff->hskew); - swaps(&stuff->vdisplay); - swaps(&stuff->vsyncstart); - swaps(&stuff->vsyncend); - swaps(&stuff->vtotal); - swapl(&stuff->flags); - swapl(&stuff->privsize); - SwapRestL(stuff); - } - return ProcVidModeModModeLine(client); -} - -static int _X_COLD -SProcVidModeValidateModeLine(ClientPtr client) -{ - xXF86OldVidModeValidateModeLineReq *oldstuff = - (xXF86OldVidModeValidateModeLineReq *) client->requestBuffer; - int ver; - - REQUEST(xXF86VidModeValidateModeLineReq); - ver = ClientMajorVersion(client); - if (ver < 2) { - REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq); - swapl(&oldstuff->screen); - swaps(&oldstuff->hdisplay); - swaps(&oldstuff->hsyncstart); - swaps(&oldstuff->hsyncend); - swaps(&oldstuff->htotal); - swaps(&oldstuff->vdisplay); - swaps(&oldstuff->vsyncstart); - swaps(&oldstuff->vsyncend); - swaps(&oldstuff->vtotal); - swapl(&oldstuff->flags); - swapl(&oldstuff->privsize); - SwapRestL(oldstuff); - } - else { - REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq); - swapl(&stuff->screen); - swaps(&stuff->hdisplay); - swaps(&stuff->hsyncstart); - swaps(&stuff->hsyncend); - swaps(&stuff->htotal); - swaps(&stuff->hskew); - swaps(&stuff->vdisplay); - swaps(&stuff->vsyncstart); - swaps(&stuff->vsyncend); - swaps(&stuff->vtotal); - swapl(&stuff->flags); - swapl(&stuff->privsize); - SwapRestL(stuff); - } - return ProcVidModeValidateModeLine(client); -} - -static int _X_COLD -SProcVidModeSwitchMode(ClientPtr client) -{ - REQUEST(xXF86VidModeSwitchModeReq); - REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq); - swaps(&stuff->screen); - swaps(&stuff->zoom); - return ProcVidModeSwitchMode(client); -} - -static int _X_COLD -SProcVidModeSwitchToMode(ClientPtr client) -{ - REQUEST(xXF86VidModeSwitchToModeReq); - REQUEST_SIZE_MATCH(xXF86VidModeSwitchToModeReq); - swapl(&stuff->screen); - return ProcVidModeSwitchToMode(client); -} - -static int _X_COLD -SProcVidModeLockModeSwitch(ClientPtr client) -{ - REQUEST(xXF86VidModeLockModeSwitchReq); - REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq); - swaps(&stuff->screen); - swaps(&stuff->lock); - return ProcVidModeLockModeSwitch(client); -} - -static int _X_COLD -SProcVidModeGetMonitor(ClientPtr client) -{ - REQUEST(xXF86VidModeGetMonitorReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq); - swaps(&stuff->screen); - return ProcVidModeGetMonitor(client); -} - -static int _X_COLD -SProcVidModeGetViewPort(ClientPtr client) -{ - REQUEST(xXF86VidModeGetViewPortReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq); - swaps(&stuff->screen); - return ProcVidModeGetViewPort(client); -} - -static int _X_COLD -SProcVidModeSetViewPort(ClientPtr client) -{ - REQUEST(xXF86VidModeSetViewPortReq); - REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq); - swaps(&stuff->screen); - swapl(&stuff->x); - swapl(&stuff->y); - return ProcVidModeSetViewPort(client); -} - -static int _X_COLD -SProcVidModeGetDotClocks(ClientPtr client) -{ - REQUEST(xXF86VidModeGetDotClocksReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetDotClocksReq); - swaps(&stuff->screen); - return ProcVidModeGetDotClocks(client); -} - -static int _X_COLD -SProcVidModeSetClientVersion(ClientPtr client) -{ - REQUEST(xXF86VidModeSetClientVersionReq); - REQUEST_SIZE_MATCH(xXF86VidModeSetClientVersionReq); - swaps(&stuff->major); - swaps(&stuff->minor); - return ProcVidModeSetClientVersion(client); -} - -static int _X_COLD -SProcVidModeSetGamma(ClientPtr client) -{ - REQUEST(xXF86VidModeSetGammaReq); - REQUEST_SIZE_MATCH(xXF86VidModeSetGammaReq); - swaps(&stuff->screen); - swapl(&stuff->red); - swapl(&stuff->green); - swapl(&stuff->blue); - return ProcVidModeSetGamma(client); -} - -static int _X_COLD -SProcVidModeGetGamma(ClientPtr client) -{ - REQUEST(xXF86VidModeGetGammaReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaReq); - swaps(&stuff->screen); - return ProcVidModeGetGamma(client); -} - -static int _X_COLD -SProcVidModeSetGammaRamp(ClientPtr client) -{ - int length; - - REQUEST(xXF86VidModeSetGammaRampReq); - REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq); - swaps(&stuff->size); - swaps(&stuff->screen); - length = ((stuff->size + 1) & ~1) * 6; - REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length); - SwapRestS(stuff); - return ProcVidModeSetGammaRamp(client); -} - -static int _X_COLD -SProcVidModeGetGammaRamp(ClientPtr client) -{ - REQUEST(xXF86VidModeGetGammaRampReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampReq); - swaps(&stuff->size); - swaps(&stuff->screen); - return ProcVidModeGetGammaRamp(client); -} - -static int _X_COLD -SProcVidModeGetGammaRampSize(ClientPtr client) -{ - REQUEST(xXF86VidModeGetGammaRampSizeReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetGammaRampSizeReq); - swaps(&stuff->screen); - return ProcVidModeGetGammaRampSize(client); -} - -static int _X_COLD -SProcVidModeGetPermissions(ClientPtr client) -{ - REQUEST(xXF86VidModeGetPermissionsReq); - REQUEST_SIZE_MATCH(xXF86VidModeGetPermissionsReq); - swaps(&stuff->screen); - return ProcVidModeGetPermissions(client); -} - -static int _X_COLD -SProcVidModeDispatch(ClientPtr client) -{ - REQUEST(xReq); - switch (stuff->data) { - case X_XF86VidModeQueryVersion: - return ProcVidModeQueryVersion(client); - case X_XF86VidModeGetModeLine: - return SProcVidModeGetModeLine(client); - case X_XF86VidModeGetMonitor: - return SProcVidModeGetMonitor(client); - case X_XF86VidModeGetAllModeLines: - return SProcVidModeGetAllModeLines(client); - case X_XF86VidModeGetViewPort: - return SProcVidModeGetViewPort(client); - case X_XF86VidModeValidateModeLine: - return SProcVidModeValidateModeLine(client); - case X_XF86VidModeGetDotClocks: - return SProcVidModeGetDotClocks(client); - case X_XF86VidModeSetClientVersion: - return SProcVidModeSetClientVersion(client); - case X_XF86VidModeGetGamma: - return SProcVidModeGetGamma(client); - case X_XF86VidModeGetGammaRamp: - return SProcVidModeGetGammaRamp(client); - case X_XF86VidModeGetGammaRampSize: - return SProcVidModeGetGammaRampSize(client); - case X_XF86VidModeGetPermissions: - return SProcVidModeGetPermissions(client); - case X_XF86VidModeAddModeLine: - return SProcVidModeAddModeLine(client); - case X_XF86VidModeDeleteModeLine: - return SProcVidModeDeleteModeLine(client); - case X_XF86VidModeModModeLine: - return SProcVidModeModModeLine(client); - case X_XF86VidModeSwitchMode: - return SProcVidModeSwitchMode(client); - case X_XF86VidModeSwitchToMode: - return SProcVidModeSwitchToMode(client); - case X_XF86VidModeLockModeSwitch: - return SProcVidModeLockModeSwitch(client); - case X_XF86VidModeSetViewPort: - return SProcVidModeSetViewPort(client); - case X_XF86VidModeSetGamma: - return SProcVidModeSetGamma(client); - case X_XF86VidModeSetGammaRamp: - return SProcVidModeSetGammaRamp(client); - default: - return BadRequest; - } -} - void VidModeAddExtension(Bool allow_non_local) { @@ -2145,7 +1884,7 @@ VidModeAddExtension(Bool allow_non_local) XF86VidModeNumberEvents, XF86VidModeNumberErrors, ProcVidModeDispatch, - SProcVidModeDispatch, + ProcVidModeDispatch, NULL, StandardMinorOpcode))) { VidModeErrorBase = extEntry->errorBase; VidModeAllowNonLocal = allow_non_local;