]> git.sesse.net Git - rdpsrv/blobdiff - Xserver/programs/Xserver/Xext/xf86vmode.c
Removed Xserver/ directory, it does nothing useful ATM.
[rdpsrv] / Xserver / programs / Xserver / Xext / xf86vmode.c
diff --git a/Xserver/programs/Xserver/Xext/xf86vmode.c b/Xserver/programs/Xserver/Xext/xf86vmode.c
deleted file mode 100644 (file)
index 874a5cb..0000000
+++ /dev/null
@@ -1,1615 +0,0 @@
-/* $XFree86: xc/programs/Xserver/Xext/xf86vmode.c,v 3.30.2.3 1997/06/11 12:08:44 dawes Exp $ */
-
-/*
-
-Copyright (c) 1995  Kaleb S. KEITHLEY
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-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 Kaleb S. KEITHLEY 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 Kaleb S. KEITHLEY 
-shall not be used in advertising or otherwise to promote the sale, use 
-or other dealings in this Software without prior written authorization
-from Kaleb S. KEITHLEY
-
-*/
-/* $XConsortium: xf86vmode.c /main/24 1996/10/26 21:56:29 kaleb $ */
-/* THIS IS NOT AN X CONSORTIUM STANDARD */
-
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include "X.h"
-#include "Xproto.h"
-#include "misc.h"
-#include "dixstruct.h"
-#include "extnsionst.h"
-#include "scrnintstr.h"
-#include "servermd.h"
-#define _XF86VIDMODE_SERVER_
-#include "xf86vmstr.h"
-#include "Xfuncproto.h"
-#include "../hw/xfree86/common/xf86.h"
-#include "../hw/xfree86/common/xf86Priv.h"
-
-#include <X11/Xtrans.h>
-#include "../os/osdep.h"
-#include <X11/Xauth.h>
-#ifndef ESIX
-#ifndef Lynx
-#include <sys/socket.h>
-#else
-#include <socket.h>
-#endif
-#else
-#include <lan/socket.h>
-#endif
-
-#include "swaprep.h"
-
-extern int xf86ScreenIndex;
-extern Bool xf86VidModeEnabled;
-extern Bool xf86VidModeAllowNonLocal;
-
-static int vidmodeErrorBase;
-
-static void XF86VidModeResetProc(
-#if NeedFunctionPrototypes
-    ExtensionEntry* /* extEntry */
-#endif
-);
-
-static DISPATCH_PROC(ProcXF86VidModeDispatch);
-static DISPATCH_PROC(ProcXF86VidModeGetAllModeLines);
-static DISPATCH_PROC(ProcXF86VidModeGetModeLine);
-static DISPATCH_PROC(ProcXF86VidModeGetMonitor);
-static DISPATCH_PROC(ProcXF86VidModeLockModeSwitch);
-static DISPATCH_PROC(ProcXF86VidModeAddModeLine);
-static DISPATCH_PROC(ProcXF86VidModeDeleteModeLine);
-static DISPATCH_PROC(ProcXF86VidModeModModeLine);
-static DISPATCH_PROC(ProcXF86VidModeValidateModeLine);
-static DISPATCH_PROC(ProcXF86VidModeQueryVersion);
-static DISPATCH_PROC(ProcXF86VidModeSwitchMode);
-static DISPATCH_PROC(ProcXF86VidModeSwitchToMode);
-static DISPATCH_PROC(ProcXF86VidModeGetViewPort);
-static DISPATCH_PROC(ProcXF86VidModeSetViewPort);
-static DISPATCH_PROC(SProcXF86VidModeDispatch);
-static DISPATCH_PROC(SProcXF86VidModeGetAllModeLines);
-static DISPATCH_PROC(SProcXF86VidModeGetModeLine);
-static DISPATCH_PROC(SProcXF86VidModeGetMonitor);
-static DISPATCH_PROC(SProcXF86VidModeLockModeSwitch);
-static DISPATCH_PROC(SProcXF86VidModeAddModeLine);
-static DISPATCH_PROC(SProcXF86VidModeDeleteModeLine);
-static DISPATCH_PROC(SProcXF86VidModeModModeLine);
-static DISPATCH_PROC(SProcXF86VidModeValidateModeLine);
-static DISPATCH_PROC(SProcXF86VidModeQueryVersion);
-static DISPATCH_PROC(SProcXF86VidModeSwitchMode);
-static DISPATCH_PROC(SProcXF86VidModeSwitchToMode);
-static DISPATCH_PROC(SProcXF86VidModeGetViewPort);
-static DISPATCH_PROC(SProcXF86VidModeSetViewPort);
-
-static unsigned char XF86VidModeReqCode = 0;
-
-/* The XF86VIDMODE_EVENTS code is far from complete */
-
-#ifdef XF86VIDMODE_EVENTS
-static int XF86VidModeEventBase = 0;
-
-static void SXF86VidModeNotifyEvent();
-#if NeedFunctionPrototypes
-    xXF86VidModeNotifyEvent * /* from */,
-    xXF86VidModeNotifyEvent * /* to */
-#endif
-);
-
-extern WindowPtr *WindowTable;
-
-static RESTYPE EventType;      /* resource type for event masks */
-
-typedef struct _XF86VidModeEvent *XF86VidModeEventPtr;
-
-typedef struct _XF86VidModeEvent {
-    XF86VidModeEventPtr        next;
-    ClientPtr          client;
-    ScreenPtr          screen;
-    XID                        resource;
-    CARD32             mask;
-} XF86VidModeEventRec;
-
-static int XF86VidModeFreeEvents();
-
-typedef struct _XF86VidModeScreenPrivate {
-    XF86VidModeEventPtr        events;
-    Bool               hasWindow;
-} XF86VidModeScreenPrivateRec, *XF86VidModeScreenPrivatePtr;
-   
-static int ScreenPrivateIndex;
-
-#define GetScreenPrivate(s) ((ScreenSaverScreenPrivatePtr)(s)->devPrivates[ScreenPrivateIndex].ptr)
-#define SetScreenPrivate(s,v) ((s)->devPrivates[ScreenPrivateIndex].ptr = (pointer) v);
-#define SetupScreen(s)  ScreenSaverScreenPrivatePtr pPriv = GetScreenPrivate(s)
-
-#define New(t)  ((t *) xalloc (sizeof (t)))
-#endif
-
-void
-XFree86VidModeExtensionInit()
-{
-    ExtensionEntry* extEntry;
-#ifdef XF86VIDMODE_EVENTS
-    int                    i;
-    ScreenPtr      pScreen;
-
-    EventType = CreateNewResourceType(XF86VidModeFreeEvents);
-    ScreenPrivateIndex = AllocateScreenPrivateIndex ();
-    for (i = 0; i < screenInfo.numScreens; i++)
-    {
-       pScreen = screenInfo.screens[i];
-       SetScreenPrivate (pScreen, NULL);
-    }
-#endif
-
-    if (
-#ifdef XF86VIDMODE_EVENTS
-        EventType && ScreenPrivateIndex != -1 &&
-#endif
-       (extEntry = AddExtension(XF86VIDMODENAME,
-                               XF86VidModeNumberEvents,
-                               XF86VidModeNumberErrors,
-                               ProcXF86VidModeDispatch,
-                               SProcXF86VidModeDispatch,
-                               XF86VidModeResetProc,
-                               StandardMinorOpcode))) {
-       XF86VidModeReqCode = (unsigned char)extEntry->base;
-       vidmodeErrorBase = extEntry->errorBase;
-#ifdef XF86VIDMODE_EVENTS
-       XF86VidModeEventBase = extEntry->eventBase;
-       EventSwapVector[XF86VidModeEventBase] = SXF86VidModeNotifyEvent;
-#endif
-    }
-}
-
-/*ARGSUSED*/
-static void
-XF86VidModeResetProc (extEntry)
-    ExtensionEntry* extEntry;
-{
-}
-
-#ifdef XF86VIDMODE_EVENTS
-static void
-CheckScreenPrivate (pScreen)
-    ScreenPtr  pScreen;
-{
-    SetupScreen (pScreen);
-
-    if (!pPriv)
-       return;
-    if (!pPriv->events && !pPriv->hasWindow) {
-       xfree (pPriv);
-       SetScreenPrivate (pScreen, NULL);
-    }
-}
-    
-static XF86VidModeScreenPrivatePtr
-MakeScreenPrivate (pScreen)
-    ScreenPtr  pScreen;
-{
-    SetupScreen (pScreen);
-
-    if (pPriv)
-       return pPriv;
-    pPriv = New (XF86VidModeScreenPrivateRec);
-    if (!pPriv)
-       return 0;
-    pPriv->events = 0;
-    pPriv->hasWindow = FALSE;
-    SetScreenPrivate (pScreen, pPriv);
-    return pPriv;
-}
-
-static unsigned long
-getEventMask (pScreen, client)
-    ScreenPtr  pScreen;
-    ClientPtr  client;
-{
-    SetupScreen(pScreen);
-    XF86VidModeEventPtr pEv;
-
-    if (!pPriv)
-       return 0;
-    for (pEv = pPriv->events; pEv; pEv = pEv->next)
-       if (pEv->client == client)
-           return pEv->mask;
-    return 0;
-}
-
-static Bool
-setEventMask (pScreen, client, mask)
-    ScreenPtr  pScreen;
-    ClientPtr  client;
-    unsigned long mask;
-{
-    SetupScreen(pScreen);
-    XF86VidModeEventPtr pEv, *pPrev;
-
-    if (getEventMask (pScreen, client) == mask)
-       return TRUE;
-    if (!pPriv) {
-       pPriv = MakeScreenPrivate (pScreen);
-       if (!pPriv)
-           return FALSE;
-    }
-    for (pPrev = &pPriv->events; pEv = *pPrev; pPrev = &pEv->next)
-       if (pEv->client == client)
-           break;
-    if (mask == 0) {
-       *pPrev = pEv->next;
-       xfree (pEv);
-       CheckScreenPrivate (pScreen);
-    } else {
-       if (!pEv) {
-           pEv = New (ScreenSaverEventRec);
-           if (!pEv) {
-               CheckScreenPrivate (pScreen);
-               return FALSE;
-           }
-           *pPrev = pEv;
-           pEv->next = NULL;
-           pEv->client = client;
-           pEv->screen = pScreen;
-           pEv->resource = FakeClientID (client->index);
-       }
-       pEv->mask = mask;
-    }
-    return TRUE;
-}
-
-static int
-XF86VidModeFreeEvents (value, id)
-    pointer value;
-    XID id;
-{
-    XF86VidModeEventPtr        pOld = (XF86VidModeEventPtr)value;
-    ScreenPtr pScreen = pOld->screen;
-    SetupScreen (pScreen);
-    XF86VidModeEventPtr        pEv, *pPrev;
-
-    if (!pPriv)
-       return TRUE;
-    for (pPrev = &pPriv->events; pEv = *pPrev; pPrev = &pEv->next)
-       if (pEv == pOld)
-           break;
-    if (!pEv)
-       return TRUE;
-    *pPrev = pEv->next;
-    xfree (pEv);
-    CheckScreenPrivate (pScreen);
-    return TRUE;
-}
-
-static void
-SendXF86VidModeNotify (pScreen, state, forced)
-    ScreenPtr  pScreen;
-    int            state;
-    Bool    forced;
-{
-    XF86VidModeScreenPrivatePtr        pPriv;
-    XF86VidModeEventPtr                pEv;
-    unsigned long              mask;
-    xXF86VidModeNotifyEvent    ev;
-    ClientPtr                  client;
-    int                                kind;
-
-    UpdateCurrentTimeIf ();
-    mask = XF86VidModeNotifyMask;
-    pScreen = screenInfo.screens[pScreen->myNum];
-    pPriv = GetScreenPrivate(pScreen);
-    if (!pPriv)
-       return;
-    kind = XF86VidModeModeChange;
-    for (pEv = pPriv->events; pEv; pEv = pEv->next)
-    {
-       client = pEv->client;
-       if (client->clientGone)
-           continue;
-       if (!(pEv->mask & mask))
-           continue;
-       ev.type = XF86VidModeNotify + XF86VidModeEventBase;
-       ev.state = state;
-       ev.sequenceNumber = client->sequence;
-       ev.timestamp = currentTime.milliseconds;
-       ev.root = WindowTable[pScreen->myNum]->drawable.id;
-       ev.kind = kind;
-       ev.forced = forced;
-       WriteEventsToClient (client, 1, (xEvent *) &ev);
-    }
-}
-
-static void
-SXF86VidModeNotifyEvent (from, to)
-    xXF86VidModeNotifyEvent *from, *to;
-{
-    to->type = from->type;
-    to->state = from->state;
-    cpswaps (from->sequenceNumber, to->sequenceNumber);
-    cpswapl (from->timestamp, to->timestamp);    
-    cpswapl (from->root, to->root);    
-    to->kind = from->kind;
-    to->forced = from->forced;
-}
-#endif
-       
-static int
-ProcXF86VidModeQueryVersion(client)
-    register ClientPtr client;
-{
-    xXF86VidModeQueryVersionReply rep;
-    register int n;
-
-    REQUEST_SIZE_MATCH(xXF86VidModeQueryVersionReq);
-    rep.type = X_Reply;
-    rep.length = 0;
-    rep.sequenceNumber = client->sequence;
-    rep.majorVersion = XF86VIDMODE_MAJOR_VERSION;
-    rep.minorVersion = XF86VIDMODE_MINOR_VERSION;
-    if (client->swapped) {
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swaps(&rep.majorVersion, n);
-       swaps(&rep.minorVersion, n);
-    }
-    WriteToClient(client, sizeof(xXF86VidModeQueryVersionReply), (char *)&rep);
-    return (client->noClientException);
-}
-
-static int
-ProcXF86VidModeGetModeLine(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeGetModeLineReq);
-    xXF86VidModeGetModeLineReply rep;
-    register int n;
-    ScrnInfoPtr vptr;
-    DisplayModePtr mptr;
-    int privsize;
-
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-    mptr = vptr->modes;
-
-    if (!mptr->Private)
-       privsize = 0;
-    else
-       privsize = mptr->PrivSize;
-
-    REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq);
-    rep.type = X_Reply;
-    rep.length = (SIZEOF(xXF86VidModeGetModeLineReply) - SIZEOF(xGenericReply) +
-                 privsize * sizeof(INT32)) >> 2;
-    rep.sequenceNumber = client->sequence;
-    rep.dotclock = vptr->clock[mptr->Clock];
-    rep.hdisplay = mptr->HDisplay;
-    rep.hsyncstart = mptr->HSyncStart;
-    rep.hsyncend = mptr->HSyncEnd;
-    rep.htotal = mptr->HTotal;
-    rep.vdisplay = mptr->VDisplay;
-    rep.vsyncstart = mptr->VSyncStart;
-    rep.vsyncend = mptr->VSyncEnd;
-    rep.vtotal = mptr->VTotal;
-    rep.flags = mptr->Flags;
-    rep.privsize = privsize;
-    if (client->swapped) {
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swapl(&rep.dotclock, n);
-       swaps(&rep.hdisplay, n);
-       swaps(&rep.hsyncstart, n);
-       swaps(&rep.hsyncend, n);
-       swaps(&rep.htotal, n);
-       swaps(&rep.vdisplay, n);
-       swaps(&rep.vsyncstart, n);
-       swaps(&rep.vsyncend, n);
-       swaps(&rep.vtotal, n);
-       swapl(&rep.flags, n);
-       swapl(&rep.privsize, n);
-    }
-    WriteToClient(client, sizeof(xXF86VidModeGetModeLineReply), (char *)&rep);
-    if (privsize) {
-       client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
-       WriteSwappedDataToClient(client, privsize * sizeof(INT32),
-                                mptr->Private);
-    }
-    return (client->noClientException);
-}
-
-static int
-ProcXF86VidModeGetAllModeLines(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeGetAllModeLinesReq);
-    xXF86VidModeGetAllModeLinesReply rep;
-    xXF86VidModeModeInfo mdinf;
-    register int n;
-    ScrnInfoPtr vptr;
-    DisplayModePtr mptr, curmptr;
-    int privsize, modecount=1;
-    int totalPrivSize = 0;
-
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-    curmptr = mptr = vptr->modes;
-
-    totalPrivSize = mptr->Private ? mptr->PrivSize : 0;
-
-    while (mptr->next != curmptr) {
-       ++modecount;
-       mptr = mptr->next;
-       if (mptr->Private)
-           totalPrivSize += mptr->PrivSize;
-    }
-
-    REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq);
-    rep.type = X_Reply;
-    rep.length = (SIZEOF(xXF86VidModeGetAllModeLinesReply) - SIZEOF(xGenericReply) +
-                 modecount * sizeof(xXF86VidModeModeInfo) +
-                 totalPrivSize * sizeof(INT32)) >> 2;
-    rep.sequenceNumber = client->sequence;
-    rep.modecount = modecount;
-    if (client->swapped) {
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swapl(&rep.modecount, n);
-    }
-    WriteToClient(client, sizeof(xXF86VidModeGetAllModeLinesReply), (char *)&rep);
-    mptr = curmptr;
-    do {
-        if (!mptr->Private)
-           privsize = 0;
-        else
-           privsize = mptr->PrivSize;
-
-        mdinf.dotclock = vptr->clock[mptr->Clock];
-        mdinf.hdisplay = mptr->HDisplay;
-        mdinf.hsyncstart = mptr->HSyncStart;
-        mdinf.hsyncend = mptr->HSyncEnd;
-        mdinf.htotal = mptr->HTotal;
-        mdinf.vdisplay = mptr->VDisplay;
-        mdinf.vsyncstart = mptr->VSyncStart;
-        mdinf.vsyncend = mptr->VSyncEnd;
-        mdinf.vtotal = mptr->VTotal;
-        mdinf.flags = mptr->Flags;
-        mdinf.privsize = privsize;
-        if (client->swapped) {
-           swapl(&mdinf.dotclock, n);
-           swaps(&mdinf.hdisplay, n);
-           swaps(&mdinf.hsyncstart, n);
-           swaps(&mdinf.hsyncend, n);
-           swaps(&mdinf.htotal, n);
-           swaps(&mdinf.vdisplay, n);
-           swaps(&mdinf.vsyncstart, n);
-           swaps(&mdinf.vsyncend, n);
-           swaps(&mdinf.vtotal, n);
-           swapl(&mdinf.flags, n);
-           swapl(&mdinf.privsize, n);
-        }
-        WriteToClient(client, sizeof(xXF86VidModeModeInfo), (char *)&mdinf);
-       if (privsize) {
-           client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
-           WriteSwappedDataToClient(client, privsize * sizeof(INT32),
-                                    mptr->Private);
-       }
-        mptr = mptr->next;
-    } while (mptr != curmptr);
-    return (client->noClientException);
-}
-
-#define CLOCKSPD(clk,scrp)     ((clk>MAXCLOCKS)? clk: scrp->clock[clk])
-#define MODEMATCH(mptr,stuff,scrp)     \
-       (CLOCKSPD(mptr->Clock,scrp) == CLOCKSPD(stuff->dotclock,scrp) \
-                               && mptr->HDisplay  == stuff->hdisplay \
-                               && mptr->HSyncStart== stuff->hsyncstart \
-                               && mptr->HSyncEnd  == stuff->hsyncend \
-                               && mptr->HTotal    == stuff->htotal \
-                               && mptr->VDisplay  == stuff->vdisplay \
-                               && mptr->VSyncStart== stuff->vsyncstart \
-                               && mptr->VSyncEnd  == stuff->vsyncend \
-                               && mptr->VTotal    == stuff->vtotal \
-                               && mptr->Flags     == stuff->flags )
-
-#include "xf86_Config.h"
-
-static int
-ProcXF86VidModeAddModeLine(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeAddModeLineReq);
-    ScrnInfoPtr vptr;
-    DisplayModePtr curmptr, mptr, newmptr;
-    Bool clock_added = FALSE;
-    int i, len;
-
-    if (xf86Verbose > 1) {
-       ErrorF("AddModeLine - scrn: %d clock: %d\n",
-               stuff->screen, stuff->dotclock);
-       ErrorF("AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n",
-               stuff->hdisplay, stuff->hsyncstart,
-               stuff->hsyncend, stuff->htotal);
-       ErrorF("              vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
-               stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,
-               stuff->vtotal, stuff->flags);
-       ErrorF("      after - scrn: %d clock: %d\n",
-               stuff->screen, stuff->after_dotclock);
-       ErrorF("              hdsp: %d hbeg: %d hend: %d httl: %d\n",
-               stuff->after_hdisplay, stuff->after_hsyncstart,
-               stuff->after_hsyncend, stuff->after_htotal);
-       ErrorF("              vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
-               stuff->after_vdisplay, stuff->after_vsyncstart,
-               stuff->after_vsyncend, stuff->after_vtotal, stuff->after_flags);
-    }
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-    curmptr = mptr = vptr->modes;
-
-    REQUEST_AT_LEAST_SIZE(xXF86VidModeAddModeLineReq);
-    len = client->req_len - (sizeof(xXF86VidModeAddModeLineReq) >> 2);
-    if (len != stuff->privsize)
-       return BadLength;
-
-    if (stuff->hsyncstart < stuff->hdisplay   ||
-       stuff->hsyncend   < stuff->hsyncstart ||
-       stuff->htotal     < stuff->hsyncend   ||
-       stuff->vsyncstart < stuff->vdisplay   ||
-       stuff->vsyncend   < stuff->vsyncstart ||
-       stuff->vtotal     < stuff->vsyncend)
-       return BadValue;
-
-    if (stuff->after_hsyncstart < stuff->after_hdisplay   ||
-       stuff->after_hsyncend   < stuff->after_hsyncstart ||
-       stuff->after_htotal     < stuff->after_hsyncend   ||
-       stuff->after_vsyncstart < stuff->after_vdisplay   ||
-       stuff->after_vsyncend   < stuff->after_vsyncstart ||
-       stuff->after_vtotal     < stuff->after_vsyncend)
-       return BadValue;
-
-    if (stuff->after_htotal != 0 || stuff->after_vtotal != 0) {
-       Bool found = FALSE;
-       do {
-           if (MODEMATCH(mptr, stuff, vptr)) {
-               found = TRUE;
-               break;
-           }
-       } while ((mptr = mptr->next) != curmptr);
-       if (!found)
-           return BadValue;
-    }
-
-    newmptr = (DisplayModePtr) xalloc(sizeof(DisplayModeRec));
-
-    /* Clock checking code, mostly copied from the xf86LookupMode function */
-    if (stuff->dotclock < vptr->clocks) {
-       newmptr->Clock = stuff->dotclock;
-    } else {
-       if ((OFLG_ISSET(CLOCK_OPTION_PROGRAMABLE, &(vptr->clockOptions))) &&
-           !OFLG_ISSET(OPTION_NO_PROGRAM_CLOCKS, &(vptr->options)))
-       {
-           for (i = 0; i < vptr->clocks; i++)
-               if (stuff->dotclock == vptr->clock[i])
-                   break;
-
-           if (i >= MAXCLOCKS || vptr->clock[i]/1000 > vptr->maxClock/1000) {
-               xfree(newmptr);
-               return vidmodeErrorBase + XF86VidModeBadClock;
-           }
-       
-           if (i == vptr->clocks) {
-               vptr->clock[i] = stuff->dotclock;
-               vptr->clocks++;
-               clock_added = TRUE;
-           }
-       } else {
-           int         flags=0, j, k, Gap, Minimum_Gap = CLOCK_TOLERANCE + 1;
-           double      refresh, bestRefresh = 0.0;
-
-           if (OFLG_ISSET(OPTION_CLKDIV2, &(vptr->options)))
-               k=2;
-           else
-               k=1;
-           
-           if (xf86BestRefresh)
-               flags |= LOOKUP_BEST_REFRESH;
-
-           for (j=1 ; j<=k ; j++) {
-               i = xf86GetNearestClock(vptr, stuff->dotclock * j);
-               if (flags & LOOKUP_BEST_REFRESH) {
-                   if ( ((vptr->clock[i]/j) / 1000) > (vptr->maxClock / 1000) ) {
-                       xfree(newmptr);
-                       return vidmodeErrorBase + XF86VidModeBadClock;
-                   } else {
-                       refresh = stuff->dotclock * 1000.0 / stuff->htotal / stuff->vtotal;
-                       if (stuff->flags & V_INTERLACE) {
-                           refresh *= 2;
-                           refresh /= INTERLACE_REFRESH_WEIGHT;
-                       } else if (stuff->flags & V_DBLSCAN)
-                           refresh /= 2;
-
-                       if (refresh > bestRefresh) {
-                           newmptr->Clock = i;
-                           if (j==2) stuff->flags |= V_CLKDIV2;
-                           bestRefresh = refresh;
-                       }
-                   }
-               } else {
-                   Gap = abs( stuff->dotclock - (vptr->clock[i]/j) );
-                   if (Gap < Minimum_Gap) {
-                       if ( ((vptr->clock[i]/j) / 1000) > (vptr->maxClock / 1000) ) {
-                           xfree(newmptr);
-                           return vidmodeErrorBase + XF86VidModeBadClock;
-                       } else {
-                           newmptr->Clock = i;
-                           if (j==2) stuff->flags |= V_CLKDIV2;
-                           Minimum_Gap = Gap;
-                       }
-                   }
-               }
-           }
-       }
-    }
-
-    newmptr->CrtcHDisplay  = newmptr->HDisplay      = stuff->hdisplay;
-    newmptr->CrtcHSyncStart= newmptr->HSyncStart    = stuff->hsyncstart;
-    newmptr->CrtcHSyncEnd  = newmptr->HSyncEnd      = stuff->hsyncend;
-    newmptr->CrtcHTotal    = newmptr->HTotal        = stuff->htotal;
-    newmptr->CrtcVDisplay  = newmptr->VDisplay      = stuff->vdisplay;
-    newmptr->CrtcVSyncStart= newmptr->VSyncStart    = stuff->vsyncstart;
-    newmptr->CrtcVSyncEnd  = newmptr->VSyncEnd      = stuff->vsyncend;
-    newmptr->CrtcVTotal    = newmptr->VTotal        = stuff->vtotal;
-    newmptr->Flags         = stuff->flags;
-#if 0
-    newmptr->CrtcHSkew     = newmptr->HSkew         = stuff->hskew;
-#endif
-    newmptr->CrtcHAdjusted = FALSE;
-    newmptr->CrtcVAdjusted = FALSE;
-    newmptr->name          = "";
-    newmptr->Private       = NULL;
-    if (stuff->privsize) {
-       if (xf86Verbose > 1)
-           ErrorF("AddModeLine - Request includes privates\n");
-       newmptr->Private =
-           (INT32 *) ALLOCATE_LOCAL(stuff->privsize * sizeof(INT32));
-       memcpy(newmptr->Private, &stuff[1], stuff->privsize*sizeof(INT32));
-    }
-
-    /* Check that the mode is consistent with the monitor specs */
-    switch (xf86CheckMode(vptr, newmptr, vptr->monitor, FALSE)) {
-       case MODE_OK:
-           break;
-       case MODE_HSYNC:
-           xfree(newmptr->Private);
-           xfree(newmptr);
-           if (clock_added)
-               vptr->clocks--;
-           return vidmodeErrorBase + XF86VidModeBadHTimings;
-       case MODE_VSYNC:
-           xfree(newmptr->Private);
-           xfree(newmptr);
-           if (clock_added)
-               vptr->clocks--;
-           return vidmodeErrorBase + XF86VidModeBadVTimings;
-       default:
-           if (clock_added)
-               vptr->clocks--;
-           return vidmodeErrorBase + XF86VidModeModeUnsuitable;
-    }
-
-    /* Check that the driver is happy with the mode */
-    if (vptr->ValidMode(newmptr, xf86Verbose, MODE_VID) != MODE_OK) {
-       xfree(newmptr->Private);
-       xfree(newmptr);
-       if (clock_added)
-           vptr->clocks--;
-       return vidmodeErrorBase + XF86VidModeModeUnsuitable;
-    }
-
-    if (newmptr->Flags & V_DBLSCAN)
-    {
-       newmptr->CrtcVDisplay *= 2;
-       newmptr->CrtcVSyncStart *= 2;
-       newmptr->CrtcVSyncEnd *= 2;
-       newmptr->CrtcVTotal *= 2;
-       newmptr->CrtcVAdjusted = TRUE;
-    }
-
-    newmptr->next       = mptr->next;
-    newmptr->prev       = mptr;
-    mptr->next          = newmptr;
-    newmptr->next->prev = newmptr;
-
-#if 0  /* Do we want this? */
-    (vptr->SwitchMode)(newmptr);
-#endif
-
-    if (xf86Verbose > 1)
-       ErrorF("AddModeLine - Succeeded\n");
-    return(client->noClientException);
-}
-
-static int
-ProcXF86VidModeDeleteModeLine(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeDeleteModeLineReq);
-    ScrnInfoPtr vptr;
-    DisplayModePtr curmptr, mptr;
-    int len;
-
-    if (xf86Verbose > 1) {
-       ErrorF("DeleteModeLine - scrn: %d clock: %d\n",
-               stuff->screen, stuff->dotclock, stuff->dotclock);
-       ErrorF("                 hdsp: %d hbeg: %d hend: %d httl: %d\n",
-               stuff->hdisplay, stuff->hsyncstart,
-               stuff->hsyncend, stuff->htotal);
-       ErrorF("                 vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
-               stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,
-               stuff->vtotal, stuff->flags);
-    }
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-    curmptr = mptr = vptr->modes;
-
-    REQUEST_AT_LEAST_SIZE(xXF86VidModeDeleteModeLineReq);
-    len = client->req_len - (sizeof(xXF86VidModeDeleteModeLineReq) >> 2);
-    if (len != stuff->privsize) {
-       if (xf86Verbose > 1) {
-           ErrorF("req_len = %d, sizeof(Req) = %d, privsize = %d, len = %d, length = %d\n",
-                   client->req_len, sizeof(xXF86VidModeDeleteModeLineReq)>>2, stuff->privsize, len, stuff->length);
-       }
-       return BadLength;
-    }
-    if (xf86Verbose > 1) {
-       ErrorF("Checking against clock: %d (%d)\n",
-               mptr->Clock, CLOCKSPD(mptr->Clock, vptr));
-       ErrorF("                 hdsp: %d hbeg: %d hend: %d httl: %d\n",
-               mptr->HDisplay, mptr->HSyncStart,
-               mptr->HSyncEnd, mptr->HTotal);
-       ErrorF("                 vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
-               mptr->VDisplay, mptr->VSyncStart, mptr->VSyncEnd,
-               mptr->VTotal, mptr->Flags);
-    }
-    if (MODEMATCH(mptr, stuff, vptr))
-       return BadValue;
-
-    while ((mptr = mptr->next) != curmptr) {
-       if (xf86Verbose > 1) {
-           ErrorF("Checking against clock: %d (%d)\n",
-                   mptr->Clock, CLOCKSPD(mptr->Clock, vptr));
-           ErrorF("                 hdsp: %d hbeg: %d hend: %d httl: %d\n",
-                   mptr->HDisplay, mptr->HSyncStart,
-                   mptr->HSyncEnd, mptr->HTotal);
-           ErrorF("                 vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
-                   mptr->VDisplay, mptr->VSyncStart, mptr->VSyncEnd,
-                   mptr->VTotal, mptr->Flags);
-       }
-       if (MODEMATCH(mptr, stuff, vptr)) {
-           mptr->prev->next = mptr->next;
-           mptr->next->prev = mptr->prev;
-           xfree(mptr->name);
-           xfree(mptr->Private);
-           xfree(mptr);
-           if (xf86Verbose)
-               ErrorF("DeleteModeLine - Succeeded\n");
-           return(client->noClientException);
-       }
-    }
-    return BadValue;
-}
-
-static int
-ProcXF86VidModeModModeLine(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeModModeLineReq);
-    ScrnInfoPtr vptr;
-    DisplayModePtr mptr;
-    DisplayModeRec modetmp;
-    int len;
-
-    if (xf86Verbose > 1) {
-       ErrorF("ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n",
-               stuff->screen, stuff->hdisplay, stuff->hsyncstart,
-               stuff->hsyncend, stuff->htotal);
-       ErrorF("              vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
-               stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,
-               stuff->vtotal, stuff->flags);
-    }
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-    mptr = vptr->modes;
-
-    REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq);
-    len = client->req_len - (sizeof(xXF86VidModeModModeLineReq) >> 2);
-    if (len != stuff->privsize)
-       return BadLength;
-
-    if (stuff->hsyncstart < stuff->hdisplay   ||
-       stuff->hsyncend   < stuff->hsyncstart ||
-       stuff->htotal     < stuff->hsyncend   ||
-       stuff->vsyncstart < stuff->vdisplay   ||
-       stuff->vsyncend   < stuff->vsyncstart ||
-       stuff->vtotal     < stuff->vsyncend)
-       return BadValue;
-
-    memcpy(&modetmp, mptr, sizeof(DisplayModeRec));
-
-    modetmp.HDisplay   = stuff->hdisplay;
-    modetmp.HSyncStart = stuff->hsyncstart;
-    modetmp.HSyncEnd   = stuff->hsyncend;
-    modetmp.HTotal     = stuff->htotal;
-    modetmp.VDisplay   = stuff->vdisplay;
-    modetmp.VSyncStart = stuff->vsyncstart;
-    modetmp.VSyncEnd   = stuff->vsyncend;
-    modetmp.VTotal     = stuff->vtotal;
-    modetmp.Flags      = stuff->flags;
-    if (mptr->PrivSize && stuff->privsize) {
-       if (mptr->PrivSize != stuff->privsize)
-           return BadValue;
-    }
-    if (mptr->PrivSize && mptr->Private) {
-       modetmp.Private =
-               (INT32 *)ALLOCATE_LOCAL(mptr->PrivSize * sizeof(INT32));
-       if (stuff->privsize) {
-           if (xf86Verbose > 1)
-               ErrorF("ModModeLine - Request includes privates\n");
-           memcpy(modetmp.Private, &stuff[1], mptr->PrivSize * sizeof(INT32));
-       } else
-           memcpy(modetmp.Private, mptr->Private,
-                  mptr->PrivSize * sizeof(INT32));
-    }
-
-    /* Check that the mode is consistent with the monitor specs */
-    switch (xf86CheckMode(vptr, &modetmp, vptr->monitor, FALSE)) {
-       case MODE_HSYNC:
-           DEALLOCATE_LOCAL(modetmp.Private);
-           return vidmodeErrorBase + XF86VidModeBadHTimings;
-       case MODE_VSYNC:
-           DEALLOCATE_LOCAL(modetmp.Private);
-           return vidmodeErrorBase + XF86VidModeBadVTimings;
-    }
-
-    /* Check that the driver is happy with the mode */
-    if (vptr->ValidMode(&modetmp, xf86Verbose, MODE_VID) != MODE_OK) {
-       DEALLOCATE_LOCAL(modetmp.Private);
-       return vidmodeErrorBase + XF86VidModeModeUnsuitable;
-    }
-
-    DEALLOCATE_LOCAL(modetmp.Private);
-
-    mptr->HDisplay   = stuff->hdisplay;
-    mptr->HSyncStart = stuff->hsyncstart;
-    mptr->HSyncEnd   = stuff->hsyncend;
-    mptr->HTotal     = stuff->htotal;
-    mptr->VDisplay   = stuff->vdisplay;
-    mptr->VSyncStart = stuff->vsyncstart;
-    mptr->VSyncEnd   = stuff->vsyncend;
-    mptr->VTotal     = stuff->vtotal;
-    mptr->Flags      = stuff->flags;
-    mptr->CrtcHDisplay   = stuff->hdisplay;
-    mptr->CrtcHSyncStart = stuff->hsyncstart;
-    mptr->CrtcHSyncEnd   = stuff->hsyncend;
-    mptr->CrtcHTotal     = stuff->htotal;
-    mptr->CrtcVDisplay   = stuff->vdisplay;
-    mptr->CrtcVSyncStart = stuff->vsyncstart;
-    mptr->CrtcVSyncEnd   = stuff->vsyncend;
-    mptr->CrtcVTotal     = stuff->vtotal;
-    mptr->CrtcVAdjusted = FALSE;
-    mptr->CrtcHAdjusted = FALSE;
-    if (mptr->Flags & V_DBLSCAN)
-    {
-       mptr->CrtcVDisplay *= 2;
-       mptr->CrtcVSyncStart *= 2;
-       mptr->CrtcVSyncEnd *= 2;
-       mptr->CrtcVTotal *= 2;
-       mptr->CrtcVAdjusted = TRUE;
-    }
-    if (mptr->PrivSize && stuff->privsize) {
-       memcpy(mptr->Private, &stuff[1], mptr->PrivSize * sizeof(INT32));
-    }
-
-    (vptr->SwitchMode)(mptr);
-    (vptr->AdjustFrame)(vptr->frameX0, vptr->frameY0);
-
-    if (xf86Verbose > 1)
-       ErrorF("ModModeLine - Succeeded\n");
-    return(client->noClientException);
-}
-
-static int
-ProcXF86VidModeValidateModeLine(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeValidateModeLineReq);
-    xXF86VidModeValidateModeLineReply rep;
-    ScrnInfoPtr vptr;
-    DisplayModePtr mptr;
-    DisplayModeRec modetmp;
-    int len, status;
-
-    if (xf86Verbose > 1) {
-       ErrorF("ValidateModeLine - scrn: %d clock: %d\n",
-               stuff->screen, stuff->dotclock);
-       ErrorF("                   hdsp: %d hbeg: %d hend: %d httl: %d\n",
-               stuff->hdisplay, stuff->hsyncstart,
-               stuff->hsyncend, stuff->htotal);
-       ErrorF("                   vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
-               stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,
-               stuff->vtotal, stuff->flags);
-    }
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-    mptr = vptr->modes;
-
-    REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq);
-    len = client->req_len - (sizeof(xXF86VidModeValidateModeLineReq) >> 2);
-    if (len != stuff->privsize)
-       return BadLength;
-
-    status = MODE_OK;
-    modetmp.Private = NULL;
-
-    if (stuff->hsyncstart < stuff->hdisplay   ||
-       stuff->hsyncend   < stuff->hsyncstart ||
-       stuff->htotal     < stuff->hsyncend   ||
-       stuff->vsyncstart < stuff->vdisplay   ||
-       stuff->vsyncend   < stuff->vsyncstart ||
-       stuff->vtotal     < stuff->vsyncend)
-    {
-       status = MODE_BAD;
-       goto status_reply;
-    }
-
-    memcpy(&modetmp, mptr, sizeof(DisplayModeRec));
-
-    modetmp.HDisplay   = stuff->hdisplay;
-    modetmp.HSyncStart = stuff->hsyncstart;
-    modetmp.HSyncEnd   = stuff->hsyncend;
-    modetmp.HTotal     = stuff->htotal;
-    modetmp.VDisplay   = stuff->vdisplay;
-    modetmp.VSyncStart = stuff->vsyncstart;
-    modetmp.VSyncEnd   = stuff->vsyncend;
-    modetmp.VTotal     = stuff->vtotal;
-    modetmp.Flags      = stuff->flags;
-    modetmp.Private    = NULL;
-    if (mptr->PrivSize && stuff->privsize) {
-       if (mptr->PrivSize != stuff->privsize) {
-           status = MODE_BAD;
-           goto status_reply;
-       }
-    }
-    if (mptr->PrivSize && mptr->Private) {
-       modetmp.Private =
-               (INT32 *)ALLOCATE_LOCAL(mptr->PrivSize * sizeof(INT32));
-       if (stuff->privsize) {
-           if (xf86Verbose)
-               ErrorF("ValidateModeLine - Request includes privates\n");
-           memcpy(modetmp.Private, &stuff[1], mptr->PrivSize * sizeof(INT32));
-       } else
-           memcpy(modetmp.Private, mptr->Private,
-                  mptr->PrivSize * sizeof(INT32));
-    }
-
-    /* Check that the mode is consistent with the monitor specs */
-    if ((status = xf86CheckMode(vptr, &modetmp, vptr->monitor, FALSE)) != MODE_OK)
-       goto status_reply;
-
-    /* Check that the driver is happy with the mode */
-    status = vptr->ValidMode(&modetmp, xf86Verbose, MODE_VID);
-
-status_reply:
-    if (modetmp.Private)
-       DEALLOCATE_LOCAL(modetmp.Private);
-    rep.type = X_Reply;
-    rep.length = (SIZEOF(xXF86VidModeValidateModeLineReply)
-                        - SIZEOF(xGenericReply)) >> 2;
-    rep.sequenceNumber = client->sequence;
-    rep.status = status;
-    if (client->swapped) {
-        register int n;
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swapl(&rep.status, n);
-    }
-    WriteToClient(client, sizeof(xXF86VidModeValidateModeLineReply), (char *)&rep);
-    if (xf86Verbose > 1)
-       ErrorF("ValidateModeLine - Succeeded\n");
-    return(client->noClientException);
-}
-
-static int
-ProcXF86VidModeSwitchMode(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeSwitchModeReq);
-    ScreenPtr vptr;
-
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = screenInfo.screens[stuff->screen];
-    if (xf86Info.dontZoom)
-       return vidmodeErrorBase + XF86VidModeZoomLocked;
-
-    REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq);
-
-    xf86ZoomViewport(vptr, (short)stuff->zoom);
-    return (client->noClientException);
-}
-
-static int
-ProcXF86VidModeSwitchToMode(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeSwitchToModeReq);
-    ScrnInfoPtr vptr;
-    DisplayModePtr curmptr, mptr;
-    int len;
-
-    if (xf86Verbose > 1) {
-       ErrorF("SwitchToMode - scrn: %d clock: %d\n",
-               stuff->screen, stuff->dotclock);
-       ErrorF("               hdsp: %d hbeg: %d hend: %d httl: %d\n",
-               stuff->hdisplay, stuff->hsyncstart,
-               stuff->hsyncend, stuff->htotal);
-       ErrorF("               vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
-               stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,
-               stuff->vtotal, stuff->flags);
-    }
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    if (xf86Info.dontZoom)
-       return vidmodeErrorBase + XF86VidModeZoomLocked;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-    curmptr = mptr = vptr->modes;
-
-    REQUEST_AT_LEAST_SIZE(xXF86VidModeSwitchToModeReq);
-    len = client->req_len - (sizeof(xXF86VidModeSwitchToModeReq) >> 2);
-    if (len != stuff->privsize)
-       return BadLength;
-
-
-    if (MODEMATCH(mptr, stuff, vptr))
-       return (client->noClientException);
-
-    while ((mptr = mptr->next) != curmptr) {
-       if (xf86Verbose > 1) {
-           ErrorF("Checking against clock: %d (%d)\n",
-                   mptr->Clock, CLOCKSPD(mptr->Clock, vptr));
-           ErrorF("                 hdsp: %d hbeg: %d hend: %d httl: %d\n",
-                   mptr->HDisplay, mptr->HSyncStart,
-                   mptr->HSyncEnd, mptr->HTotal);
-           ErrorF("                 vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
-                   mptr->VDisplay, mptr->VSyncStart, mptr->VSyncEnd,
-                   mptr->VTotal, mptr->Flags);
-       }
-       if (MODEMATCH(mptr, stuff, vptr)) {
-           if ((vptr->SwitchMode)(mptr)) {
-               vptr->modes = mptr;
-               vptr->frameX0 = (vptr->frameX1 +vptr->frameX0 -mptr->HDisplay)/2;
-               vptr->frameX1 = vptr->frameX0 + mptr->HDisplay -1;
-               if (vptr->frameX0 < 0) {
-                   vptr->frameX0 = 0;
-                   vptr->frameX1 = mptr->HDisplay -1;
-               } else if (vptr->frameX1 >= vptr->virtualX) {
-                   vptr->frameX0 = vptr->virtualX - mptr->HDisplay;
-                   vptr->frameX1 = vptr->frameX0 + mptr->HDisplay -1;
-               }
-               vptr->frameY0 = (vptr->frameY1 +vptr->frameY0 -mptr->VDisplay)/2;
-               vptr->frameY1 = vptr->frameY0 + mptr->VDisplay -1;
-               if (vptr->frameY0 < 0) {
-                   vptr->frameY0 = 0;
-                   vptr->frameY1 = mptr->VDisplay -1;
-               } else if (vptr->frameY1 >= vptr->virtualY) {
-                   vptr->frameY0 = vptr->virtualY - mptr->VDisplay;
-                   vptr->frameY1 = vptr->frameY0 + mptr->VDisplay -1;
-               }
-           }
-           (vptr->AdjustFrame)(vptr->frameX0, vptr->frameY0);
-           if (xf86Verbose > 1)
-               ErrorF("SwitchToMode - Succeeded\n");
-           return(client->noClientException);
-       }
-    }
-    return BadValue;
-}
-
-static int
-ProcXF86VidModeLockModeSwitch(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeLockModeSwitchReq);
-    ScreenPtr vptr;
-
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = screenInfo.screens[stuff->screen];
-    if (xf86Info.dontZoom)
-       return vidmodeErrorBase + XF86VidModeZoomLocked;
-
-    REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq);
-
-    xf86LockZoom(vptr, (short)stuff->lock);
-    return (client->noClientException);
-}
-
-static int
-ProcXF86VidModeGetMonitor(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeGetMonitorReq);
-    xXF86VidModeGetMonitorReply rep;
-    register int n;
-    ScrnInfoPtr vptr;
-    MonPtr mptr;
-    CARD32 *hsyncdata, *vsyncdata;
-    int i;
-
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-    mptr = vptr->monitor;
-
-    REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq);
-    rep.type = X_Reply;
-    if (mptr->vendor)
-       rep.vendorLength = strlen(mptr->vendor);
-    else
-       rep.vendorLength = 0;
-    if (mptr->model)
-       rep.modelLength = strlen(mptr->model);
-    else
-       rep.modelLength = 0;
-    rep.length = (SIZEOF(xXF86VidModeGetMonitorReply) - SIZEOF(xGenericReply) +
-                 (mptr->n_hsync + mptr->n_vrefresh) * sizeof(CARD32) +
-                 ((rep.vendorLength + 3) & ~3) +
-                 ((rep.modelLength + 3) & ~3)) >> 2;
-    rep.sequenceNumber = client->sequence;
-    rep.nhsync = mptr->n_hsync;
-    rep.nvsync = mptr->n_vrefresh;
-#if 0
-    rep.bandwidth = (unsigned long)(mptr->bandwidth * 1e6);
-#endif
-    hsyncdata = ALLOCATE_LOCAL(mptr->n_hsync * sizeof(CARD32));
-    if (!hsyncdata) {
-       return BadAlloc;
-    }
-    vsyncdata = ALLOCATE_LOCAL(mptr->n_vrefresh * sizeof(CARD32));
-    if (!vsyncdata) {
-       DEALLOCATE_LOCAL(hsyncdata);
-       return BadAlloc;
-    }
-    for (i = 0; i < mptr->n_hsync; i++) {
-       hsyncdata[i] = (unsigned short)(mptr->hsync[i].lo * 100.0) |
-                      (unsigned short)(mptr->hsync[i].hi * 100.0) << 16;
-    }
-    for (i = 0; i < mptr->n_vrefresh; i++) {
-       vsyncdata[i] = (unsigned short)(mptr->vrefresh[i].lo * 100.0) |
-                      (unsigned short)(mptr->vrefresh[i].hi * 100.0) << 16;
-    }
-    
-    if (client->swapped) {
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-#if 0
-       swapl(&rep.bandwidth, n);
-#endif
-    }
-    WriteToClient(client, SIZEOF(xXF86VidModeGetMonitorReply), (char *)&rep);
-    client->pSwapReplyFunc = (ReplySwapPtr) Swap32Write;
-    WriteSwappedDataToClient(client, mptr->n_hsync * sizeof(CARD32),
-                            hsyncdata);
-    WriteSwappedDataToClient(client, mptr->n_vrefresh * sizeof(CARD32),
-                            vsyncdata);
-    if (rep.vendorLength)
-       WriteToClient(client, rep.vendorLength, mptr->vendor);
-    if (rep.modelLength)
-       WriteToClient(client, rep.modelLength, mptr->model);
-    DEALLOCATE_LOCAL(hsyncdata);
-    DEALLOCATE_LOCAL(vsyncdata);
-    return (client->noClientException);
-}
-
-static int
-ProcXF86VidModeGetViewPort(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeGetViewPortReq);
-    xXF86VidModeGetViewPortReply rep;
-    ScrnInfoPtr vptr;
-    int n;
-
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-
-    REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq);
-    rep.type = X_Reply;
-    rep.length = 0;
-    rep.sequenceNumber = client->sequence;
-    rep.x = vptr->frameX0;
-    rep.y = vptr->frameY0;
-
-    if (client->swapped) {
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swapl(&rep.x, n);
-       swapl(&rep.y, n);
-    }
-    WriteToClient(client, SIZEOF(xXF86VidModeGetViewPortReply), (char *)&rep);
-    return (client->noClientException);
-}
-
-static int
-ProcXF86VidModeSetViewPort(client)
-    register ClientPtr client;
-{
-    REQUEST(xXF86VidModeSetViewPortReq);
-    ScrnInfoPtr vptr;
-    int x, y;
-
-    if (stuff->screen > screenInfo.numScreens)
-       return BadValue;
-
-    vptr = (ScrnInfoPtr) screenInfo.screens[stuff->screen]->devPrivates[xf86ScreenIndex].ptr;
-
-    REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq);
-
-    if (stuff->x < 0)
-       x = 0;
-    else if (stuff->x + vptr->modes->HDisplay + 1 > vptr->virtualX)
-       x = vptr->virtualX - vptr->modes->HDisplay - 1;
-    else
-       x = stuff->x;
-
-    if (stuff->y < 0)
-       y = 0;
-    else if (stuff->y + vptr->modes->VDisplay + 1 > vptr->virtualY)
-       y = vptr->virtualY - vptr->modes->VDisplay - 1;
-    else
-       y = stuff->y;
-
-    if (vptr->AdjustFrame && xf86VTSema) {
-       vptr->AdjustFrame(x, y);
-       vptr->frameX0 = x;
-       vptr->frameX1 = x + vptr->modes->HDisplay - 1;
-       vptr->frameY0 = y;
-       vptr->frameY1 = y + vptr->modes->VDisplay - 1;
-    }
-    
-    return (client->noClientException);
-}
-
-
-static int
-ProcXF86VidModeDispatch (client)
-    register ClientPtr client;
-{
-    REQUEST(xReq);
-    switch (stuff->data)
-    {
-    case X_XF86VidModeQueryVersion:
-       return ProcXF86VidModeQueryVersion(client);
-    case X_XF86VidModeGetModeLine:
-       return ProcXF86VidModeGetModeLine(client);
-    case X_XF86VidModeGetAllModeLines:
-       return ProcXF86VidModeGetAllModeLines(client);
-    case X_XF86VidModeGetMonitor:
-       return ProcXF86VidModeGetMonitor(client);
-    case X_XF86VidModeValidateModeLine:
-       return ProcXF86VidModeValidateModeLine(client);
-    case X_XF86VidModeGetViewPort:
-       return ProcXF86VidModeGetViewPort(client);
-    default:
-       if (!xf86VidModeEnabled)
-           return vidmodeErrorBase + XF86VidModeExtensionDisabled;
-       if (xf86VidModeAllowNonLocal || LocalClient (client)) {
-           switch (stuff->data) {
-           case X_XF86VidModeAddModeLine:
-               return ProcXF86VidModeAddModeLine(client);
-           case X_XF86VidModeDeleteModeLine:
-               return ProcXF86VidModeDeleteModeLine(client);
-           case X_XF86VidModeModModeLine:
-               return ProcXF86VidModeModModeLine(client);
-           case X_XF86VidModeSwitchMode:
-               return ProcXF86VidModeSwitchMode(client);
-           case X_XF86VidModeSwitchToMode:
-               return ProcXF86VidModeSwitchToMode(client);
-           case X_XF86VidModeLockModeSwitch:
-               return ProcXF86VidModeLockModeSwitch(client);
-           case X_XF86VidModeSetViewPort:
-               return ProcXF86VidModeSetViewPort(client);
-           default:
-               return BadRequest;
-           }
-       } else
-           return vidmodeErrorBase + XF86VidModeClientNotLocal;
-    }
-}
-
-static int
-SProcXF86VidModeQueryVersion(client)
-    register ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeQueryVersionReq);
-    swaps(&stuff->length, n);
-    return ProcXF86VidModeQueryVersion(client);
-}
-
-static int
-SProcXF86VidModeGetModeLine(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeGetModeLineReq);
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xXF86VidModeGetModeLineReq);
-    swaps(&stuff->screen, n);
-    return ProcXF86VidModeGetModeLine(client);
-}
-
-static int
-SProcXF86VidModeGetAllModeLines(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeGetAllModeLinesReq);
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xXF86VidModeGetAllModeLinesReq);
-    swaps(&stuff->screen, n);
-    return ProcXF86VidModeGetAllModeLines(client);
-}
-
-static int
-SProcXF86VidModeAddModeLine(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeAddModeLineReq);
-    swaps(&stuff->length, n);
-    REQUEST_AT_LEAST_SIZE(xXF86VidModeAddModeLineReq);
-    swapl(&stuff->screen, n);
-    swaps(&stuff->hdisplay, n);
-    swaps(&stuff->hsyncstart, n);
-    swaps(&stuff->hsyncend, n);
-    swaps(&stuff->htotal, n);
-    swaps(&stuff->vdisplay, n);
-    swaps(&stuff->vsyncstart, n);
-    swaps(&stuff->vsyncend, n);
-    swaps(&stuff->vtotal, n);
-    swapl(&stuff->flags, n);
-    swapl(&stuff->privsize, n);
-    SwapRestL(stuff);
-    return ProcXF86VidModeAddModeLine(client);
-}
-
-static int
-SProcXF86VidModeDeleteModeLine(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeDeleteModeLineReq);
-    swaps(&stuff->length, n);
-    REQUEST_AT_LEAST_SIZE(xXF86VidModeDeleteModeLineReq);
-    swapl(&stuff->screen, n);
-    swaps(&stuff->hdisplay, n);
-    swaps(&stuff->hsyncstart, n);
-    swaps(&stuff->hsyncend, n);
-    swaps(&stuff->htotal, n);
-    swaps(&stuff->vdisplay, n);
-    swaps(&stuff->vsyncstart, n);
-    swaps(&stuff->vsyncend, n);
-    swaps(&stuff->vtotal, n);
-    swapl(&stuff->flags, n);
-    swapl(&stuff->privsize, n);
-    SwapRestL(stuff);
-    return ProcXF86VidModeDeleteModeLine(client);
-}
-
-static int
-SProcXF86VidModeModModeLine(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeModModeLineReq);
-    swaps(&stuff->length, n);
-    REQUEST_AT_LEAST_SIZE(xXF86VidModeModModeLineReq);
-    swapl(&stuff->screen, n);
-    swaps(&stuff->hdisplay, n);
-    swaps(&stuff->hsyncstart, n);
-    swaps(&stuff->hsyncend, n);
-    swaps(&stuff->htotal, n);
-    swaps(&stuff->vdisplay, n);
-    swaps(&stuff->vsyncstart, n);
-    swaps(&stuff->vsyncend, n);
-    swaps(&stuff->vtotal, n);
-    swapl(&stuff->flags, n);
-    swapl(&stuff->privsize, n);
-    SwapRestL(stuff);
-    return ProcXF86VidModeModModeLine(client);
-}
-
-static int
-SProcXF86VidModeValidateModeLine(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeValidateModeLineReq);
-    swaps(&stuff->length, n);
-    REQUEST_AT_LEAST_SIZE(xXF86VidModeValidateModeLineReq);
-    swapl(&stuff->screen, n);
-    swaps(&stuff->hdisplay, n);
-    swaps(&stuff->hsyncstart, n);
-    swaps(&stuff->hsyncend, n);
-    swaps(&stuff->htotal, n);
-    swaps(&stuff->vdisplay, n);
-    swaps(&stuff->vsyncstart, n);
-    swaps(&stuff->vsyncend, n);
-    swaps(&stuff->vtotal, n);
-    swapl(&stuff->flags, n);
-    swapl(&stuff->privsize, n);
-    SwapRestL(stuff);
-    return ProcXF86VidModeValidateModeLine(client);
-}
-
-static int
-SProcXF86VidModeSwitchMode(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeSwitchModeReq);
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq);
-    swaps(&stuff->screen, n);
-    swaps(&stuff->zoom, n);
-    return ProcXF86VidModeSwitchMode(client);
-}
-
-static int
-SProcXF86VidModeSwitchToMode(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeSwitchToModeReq);
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xXF86VidModeSwitchToModeReq);
-    swaps(&stuff->screen, n);
-    return ProcXF86VidModeSwitchToMode(client);
-}
-
-static int
-SProcXF86VidModeLockModeSwitch(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeLockModeSwitchReq);
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xXF86VidModeLockModeSwitchReq);
-    swaps(&stuff->screen, n);
-    swaps(&stuff->lock, n);
-    return ProcXF86VidModeLockModeSwitch(client);
-}
-
-static int
-SProcXF86VidModeGetMonitor(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeGetMonitorReq);
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xXF86VidModeGetMonitorReq);
-    swaps(&stuff->screen, n);
-    return ProcXF86VidModeGetMonitor(client);
-}
-
-static int
-SProcXF86VidModeGetViewPort(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeGetViewPortReq);
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xXF86VidModeGetViewPortReq);
-    swaps(&stuff->screen, n);
-    return ProcXF86VidModeGetViewPort(client);
-}
-
-static int
-SProcXF86VidModeSetViewPort(client)
-    ClientPtr client;
-{
-    register int n;
-    REQUEST(xXF86VidModeSetViewPortReq);
-    swaps(&stuff->length, n);
-    REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq);
-    swaps(&stuff->screen, n);
-    swapl(&stuff->x, n);
-    swapl(&stuff->y, n);
-    return ProcXF86VidModeSetViewPort(client);
-}
-
-static int
-SProcXF86VidModeDispatch (client)
-    register ClientPtr client;
-{
-    REQUEST(xReq);
-    switch (stuff->data)
-    {
-    case X_XF86VidModeQueryVersion:
-       return SProcXF86VidModeQueryVersion(client);
-    case X_XF86VidModeGetModeLine:
-       return SProcXF86VidModeGetModeLine(client);
-    case X_XF86VidModeGetAllModeLines:
-       return SProcXF86VidModeGetAllModeLines(client);
-    case X_XF86VidModeGetMonitor:
-       return SProcXF86VidModeGetMonitor(client);
-    case X_XF86VidModeGetViewPort:
-       return SProcXF86VidModeGetViewPort(client);
-    case X_XF86VidModeValidateModeLine:
-       return SProcXF86VidModeValidateModeLine(client);
-    default:
-       if (!xf86VidModeEnabled)
-           return vidmodeErrorBase + XF86VidModeExtensionDisabled;
-       if (xf86VidModeAllowNonLocal || LocalClient(client)) {
-           switch (stuff->data) {
-           case X_XF86VidModeAddModeLine:
-               return SProcXF86VidModeAddModeLine(client);
-           case X_XF86VidModeDeleteModeLine:
-               return SProcXF86VidModeDeleteModeLine(client);
-           case X_XF86VidModeModModeLine:
-               return SProcXF86VidModeModModeLine(client);
-           case X_XF86VidModeSwitchMode:
-               return SProcXF86VidModeSwitchMode(client);
-           case X_XF86VidModeSwitchToMode:
-               return SProcXF86VidModeSwitchToMode(client);
-           case X_XF86VidModeLockModeSwitch:
-               return SProcXF86VidModeLockModeSwitch(client);
-           case X_XF86VidModeSetViewPort:
-               return SProcXF86VidModeSetViewPort(client);
-           default:
-               return BadRequest;
-           }
-       } else
-           return vidmodeErrorBase + XF86VidModeClientNotLocal;
-    }
-}