Blame synfig-osx/launcher/pseudoramiX.c

Carlos Lopez a09598
/*
Carlos Lopez a09598
 * Minimal implementation of PanoramiX/Xinerama
Carlos Lopez a09598
 *
Carlos Lopez a09598
 * This is used in rootless mode where the underlying window server
Carlos Lopez a09598
 * already provides an abstracted view of multiple screens as one
Carlos Lopez a09598
 * large screen area.
Carlos Lopez a09598
 *
Carlos Lopez a09598
 * This code is largely based on panoramiX.c, which contains the
Carlos Lopez a09598
 * following copyright notice:
Carlos Lopez a09598
 */
Carlos Lopez a09598
/*****************************************************************
Carlos Lopez a09598
Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
Carlos Lopez a09598
Permission is hereby granted, free of charge, to any person obtaining a copy
Carlos Lopez a09598
of this software and associated documentation files (the "Software"), to deal
Carlos Lopez a09598
in the Software without restriction, including without limitation the rights
Carlos Lopez a09598
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
Carlos Lopez a09598
copies of the Software.
Carlos Lopez a09598
Carlos Lopez a09598
The above copyright notice and this permission notice shall be included in
Carlos Lopez a09598
all copies or substantial portions of the Software.
Carlos Lopez a09598
Carlos Lopez a09598
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Carlos Lopez a09598
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Carlos Lopez a09598
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
Carlos Lopez a09598
DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
Carlos Lopez a09598
BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
Carlos Lopez a09598
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
Carlos Lopez a09598
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Carlos Lopez a09598
Carlos Lopez a09598
Except as contained in this notice, the name of Digital Equipment Corporation
Carlos Lopez a09598
shall not be used in advertising or otherwise to promote the sale, use or other
Carlos Lopez a09598
dealings in this Software without prior written authorization from Digital
Carlos Lopez a09598
Equipment Corporation.
Carlos Lopez a09598
******************************************************************/
Carlos Lopez a09598
/* $XFree86: xc/programs/Xserver/hw/darwin/quartz/pseudoramiX.c,v 1.1 2002/03/28 02:21:18 torrey Exp $ */
Carlos Lopez a09598
Carlos Lopez a09598
#include "pseudoramiX.h"
Carlos Lopez a09598
Carlos Lopez a09598
#include "extnsionst.h"
Carlos Lopez a09598
#include "dixstruct.h"
Carlos Lopez a09598
#include "window.h"
Carlos Lopez a09598
#include "panoramiXproto.h"
Carlos Lopez a09598
#include "globals.h"
Carlos Lopez a09598
Carlos Lopez a09598
extern int ProcPanoramiXQueryVersion (ClientPtr client);
Carlos Lopez a09598
Carlos Lopez a09598
static void PseudoramiXResetProc(ExtensionEntry *extEntry);
Carlos Lopez a09598
Carlos Lopez a09598
static int ProcPseudoramiXQueryVersion(ClientPtr client);
Carlos Lopez a09598
static int ProcPseudoramiXGetState(ClientPtr client);
Carlos Lopez a09598
static int ProcPseudoramiXGetScreenCount(ClientPtr client);
Carlos Lopez a09598
static int ProcPseudoramiXGetScreenSize(ClientPtr client);
Carlos Lopez a09598
static int ProcPseudoramiXIsActive(ClientPtr client);
Carlos Lopez a09598
static int ProcPseudoramiXQueryScreens(ClientPtr client);
Carlos Lopez a09598
static int ProcPseudoramiXDispatch(ClientPtr client);
Carlos Lopez a09598
Carlos Lopez a09598
static int SProcPseudoramiXQueryVersion(ClientPtr client);
Carlos Lopez a09598
static int SProcPseudoramiXGetState(ClientPtr client);
Carlos Lopez a09598
static int SProcPseudoramiXGetScreenCount(ClientPtr client);
Carlos Lopez a09598
static int SProcPseudoramiXGetScreenSize(ClientPtr client);
Carlos Lopez a09598
static int SProcPseudoramiXIsActive(ClientPtr client);
Carlos Lopez a09598
static int SProcPseudoramiXQueryScreens(ClientPtr client);
Carlos Lopez a09598
static int SProcPseudoramiXDispatch(ClientPtr client);
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
typedef struct {
Carlos Lopez a09598
    int x;
Carlos Lopez a09598
    int y;
Carlos Lopez a09598
    int w;
Carlos Lopez a09598
    int h;
Carlos Lopez a09598
} PseudoramiXScreenRec;
Carlos Lopez a09598
Carlos Lopez a09598
static PseudoramiXScreenRec *pseudoramiXScreens = NULL;
Carlos Lopez a09598
static int pseudoramiXScreensAllocated = 0;
Carlos Lopez a09598
static int pseudoramiXNumScreens = 0;
Carlos Lopez a09598
static int pseudoramiXGeneration = -1;
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
// Add a PseudoramiX screen.
Carlos Lopez a09598
// The rest of the X server will know nothing about this screen.
Carlos Lopez a09598
// Can be called before or after extension init.
Carlos Lopez a09598
// Screens must be re-added once per generation.
Carlos Lopez a09598
void
Carlos Lopez a09598
PseudoramiXAddScreen(int x, int y, int w, int h)
Carlos Lopez a09598
{
Carlos Lopez a09598
    PseudoramiXScreenRec *s;
Carlos Lopez a09598
Carlos Lopez a09598
    if (noPseudoramiXExtension) return;
Carlos Lopez a09598
Carlos Lopez a09598
    if (pseudoramiXNumScreens == pseudoramiXScreensAllocated) {
Carlos Lopez a09598
        pseudoramiXScreensAllocated += pseudoramiXScreensAllocated + 1;
Carlos Lopez a09598
        pseudoramiXScreens = xrealloc(pseudoramiXScreens,
Carlos Lopez a09598
                                      pseudoramiXScreensAllocated *
Carlos Lopez a09598
                                      sizeof(PseudoramiXScreenRec));
Carlos Lopez a09598
    }
Carlos Lopez a09598
Carlos Lopez a09598
    s = &pseudoramiXScreens[pseudoramiXNumScreens++];
Carlos Lopez a09598
    s->x = x;
Carlos Lopez a09598
    s->y = y;
Carlos Lopez a09598
    s->w = w;
Carlos Lopez a09598
    s->h = h;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
// Initialize PseudoramiX.
Carlos Lopez a09598
// Copied from PanoramiXExtensionInit
Carlos Lopez a09598
void PseudoramiXExtensionInit(int argc, char *argv[])
Carlos Lopez a09598
{
Carlos Lopez a09598
    Bool	     	success = FALSE;
Carlos Lopez a09598
    ExtensionEntry 	*extEntry;
Carlos Lopez a09598
Carlos Lopez a09598
    if (noPseudoramiXExtension) return;
Carlos Lopez a09598
Carlos Lopez a09598
#if 0
Carlos Lopez a09598
    if (pseudoramiXNumScreens == 1) {
Carlos Lopez a09598
        // Only one screen - disable Xinerama extension.
Carlos Lopez a09598
        noPseudoramiXExtension = TRUE;
Carlos Lopez a09598
        return;
Carlos Lopez a09598
    }
Carlos Lopez a09598
#endif
Carlos Lopez a09598
Carlos Lopez a09598
    // The server must not run the PanoramiX operations.
Carlos Lopez a09598
    noPanoramiXExtension = TRUE;
Carlos Lopez a09598
Carlos Lopez a09598
    if (pseudoramiXGeneration != serverGeneration) {
Carlos Lopez a09598
        extEntry = AddExtension(PANORAMIX_PROTOCOL_NAME, 0, 0,
Carlos Lopez a09598
                                ProcPseudoramiXDispatch,
Carlos Lopez a09598
                                SProcPseudoramiXDispatch,
Carlos Lopez a09598
                                PseudoramiXResetProc,
Carlos Lopez a09598
                                StandardMinorOpcode);
Carlos Lopez a09598
        if (!extEntry) {
Carlos Lopez a09598
            ErrorF("PseudoramiXExtensionInit(): AddExtension failed\n");
Carlos Lopez a09598
        } else {
Carlos Lopez a09598
            pseudoramiXGeneration = serverGeneration;
Carlos Lopez a09598
            success = TRUE;
Carlos Lopez a09598
        }
Carlos Lopez a09598
    }
Carlos Lopez a09598
Carlos Lopez a09598
    if (!success) {
Carlos Lopez a09598
        ErrorF("%s Extension (PseudoramiX) failed to initialize\n",
Carlos Lopez a09598
               PANORAMIX_PROTOCOL_NAME);
Carlos Lopez a09598
        return;
Carlos Lopez a09598
    }
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
static void PseudoramiXResetProc(ExtensionEntry *extEntry)
Carlos Lopez a09598
{
Carlos Lopez a09598
    pseudoramiXNumScreens = 0;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void PseudoramiXResetScreens (void)
Carlos Lopez a09598
{
Carlos Lopez a09598
    pseudoramiXNumScreens = 0;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
// was PanoramiX
Carlos Lopez a09598
static int ProcPseudoramiXQueryVersion(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
    return ProcPanoramiXQueryVersion(client);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
// was PanoramiX
Carlos Lopez a09598
static int ProcPseudoramiXGetState(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
    REQUEST(xPanoramiXGetStateReq);
Carlos Lopez a09598
    WindowPtr pWin;
Carlos Lopez a09598
    xPanoramiXGetStateReply rep;
Carlos Lopez a09598
    register int n;
Carlos Lopez a09598
Carlos Lopez a09598
    REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
Carlos Lopez a09598
    pWin = LookupWindow (stuff->window, client);
Carlos Lopez a09598
    if (!pWin)
Carlos Lopez a09598
        return BadWindow;
Carlos Lopez a09598
    rep.type = X_Reply;
Carlos Lopez a09598
    rep.length = 0;
Carlos Lopez a09598
    rep.sequenceNumber = client->sequence;
Carlos Lopez a09598
    rep.state = !noPseudoramiXExtension;
Carlos Lopez a09598
    if (client->swapped) {
Carlos Lopez a09598
        swaps (&rep.sequenceNumber, n);
Carlos Lopez a09598
        swapl (&rep.length, n);
Carlos Lopez a09598
        swaps (&rep.state, n);
Carlos Lopez a09598
    }
Carlos Lopez a09598
    WriteToClient (client, sizeof (xPanoramiXGetStateReply), (char *) &rep);
Carlos Lopez a09598
    return client->noClientException;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
// was PanoramiX
Carlos Lopez a09598
static int ProcPseudoramiXGetScreenCount(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
    REQUEST(xPanoramiXGetScreenCountReq);
Carlos Lopez a09598
    WindowPtr pWin;
Carlos Lopez a09598
    xPanoramiXGetScreenCountReply rep;
Carlos Lopez a09598
    register int n;
Carlos Lopez a09598
Carlos Lopez a09598
    REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
Carlos Lopez a09598
    pWin = LookupWindow (stuff->window, client);
Carlos Lopez a09598
    if (!pWin)
Carlos Lopez a09598
        return BadWindow;
Carlos Lopez a09598
    rep.type = X_Reply;
Carlos Lopez a09598
    rep.length = 0;
Carlos Lopez a09598
    rep.sequenceNumber = client->sequence;
Carlos Lopez a09598
    rep.ScreenCount = pseudoramiXNumScreens;
Carlos Lopez a09598
    if (client->swapped) {
Carlos Lopez a09598
        swaps (&rep.sequenceNumber, n);
Carlos Lopez a09598
        swapl (&rep.length, n);
Carlos Lopez a09598
        swaps (&rep.ScreenCount, n);
Carlos Lopez a09598
    }
Carlos Lopez a09598
    WriteToClient (client, sizeof(xPanoramiXGetScreenCountReply), (char *)&rep);
Carlos Lopez a09598
    return client->noClientException;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
// was PanoramiX
Carlos Lopez a09598
static int ProcPseudoramiXGetScreenSize(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
    REQUEST(xPanoramiXGetScreenSizeReq);
Carlos Lopez a09598
    WindowPtr			pWin;
Carlos Lopez a09598
    xPanoramiXGetScreenSizeReply	rep;
Carlos Lopez a09598
    register int			n;
Carlos Lopez a09598
Carlos Lopez a09598
    REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
Carlos Lopez a09598
    pWin = LookupWindow (stuff->window, client);
Carlos Lopez a09598
    if (!pWin)
Carlos Lopez a09598
        return BadWindow;
Carlos Lopez a09598
    rep.type = X_Reply;
Carlos Lopez a09598
    rep.length = 0;
Carlos Lopez a09598
    rep.sequenceNumber = client->sequence;
Carlos Lopez a09598
    /* screen dimensions */
Carlos Lopez a09598
    rep.width  = pseudoramiXScreens[stuff->screen].w;
Carlos Lopez a09598
    // was panoramiXdataPtr[stuff->screen].width;
Carlos Lopez a09598
    rep.height = pseudoramiXScreens[stuff->screen].h;
Carlos Lopez a09598
    // was panoramiXdataPtr[stuff->screen].height;
Carlos Lopez a09598
    if (client->swapped) {
Carlos Lopez a09598
        swaps (&rep.sequenceNumber, n);
Carlos Lopez a09598
        swapl (&rep.length, n);
Carlos Lopez a09598
        swaps (&rep.width, n);
Carlos Lopez a09598
        swaps (&rep.height, n);
Carlos Lopez a09598
    }
Carlos Lopez a09598
    WriteToClient (client, sizeof(xPanoramiXGetScreenSizeReply), (char *)&rep);
Carlos Lopez a09598
    return client->noClientException;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
// was Xinerama
Carlos Lopez a09598
static int ProcPseudoramiXIsActive(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
    /* REQUEST(xXineramaIsActiveReq); */
Carlos Lopez a09598
    xXineramaIsActiveReply	rep;
Carlos Lopez a09598
Carlos Lopez a09598
    REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
Carlos Lopez a09598
Carlos Lopez a09598
    rep.type = X_Reply;
Carlos Lopez a09598
    rep.length = 0;
Carlos Lopez a09598
    rep.sequenceNumber = client->sequence;
Carlos Lopez a09598
    rep.state = !noPseudoramiXExtension;
Carlos Lopez a09598
    if (client->swapped) {
Carlos Lopez a09598
	register int n;
Carlos Lopez a09598
	swaps (&rep.sequenceNumber, n);
Carlos Lopez a09598
	swapl (&rep.length, n);
Carlos Lopez a09598
	swapl (&rep.state, n);
Carlos Lopez a09598
    }
Carlos Lopez a09598
    WriteToClient (client, sizeof (xXineramaIsActiveReply), (char *) &rep);
Carlos Lopez a09598
    return client->noClientException;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
// was Xinerama
Carlos Lopez a09598
static int ProcPseudoramiXQueryScreens(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
    /* REQUEST(xXineramaQueryScreensReq); */
Carlos Lopez a09598
    xXineramaQueryScreensReply	rep;
Carlos Lopez a09598
Carlos Lopez a09598
    REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
Carlos Lopez a09598
Carlos Lopez a09598
    rep.type = X_Reply;
Carlos Lopez a09598
    rep.sequenceNumber = client->sequence;
Carlos Lopez a09598
    rep.number = noPseudoramiXExtension ? 0 : pseudoramiXNumScreens;
Carlos Lopez a09598
    rep.length = rep.number * sz_XineramaScreenInfo >> 2;
Carlos Lopez a09598
    if (client->swapped) {
Carlos Lopez a09598
	register int n;
Carlos Lopez a09598
	swaps (&rep.sequenceNumber, n);
Carlos Lopez a09598
	swapl (&rep.length, n);
Carlos Lopez a09598
	swapl (&rep.number, n);
Carlos Lopez a09598
    }
Carlos Lopez a09598
    WriteToClient (client, sizeof (xXineramaQueryScreensReply), (char *) &rep);
Carlos Lopez a09598
Carlos Lopez a09598
    if (!noPseudoramiXExtension) {
Carlos Lopez a09598
	xXineramaScreenInfo scratch;
Carlos Lopez a09598
	int i;
Carlos Lopez a09598
Carlos Lopez a09598
	for(i = 0; i < pseudoramiXNumScreens; i++) {
Carlos Lopez a09598
	    scratch.x_org  = pseudoramiXScreens[i].x;
Carlos Lopez a09598
	    scratch.y_org  = pseudoramiXScreens[i].y;
Carlos Lopez a09598
	    scratch.width  = pseudoramiXScreens[i].w;
Carlos Lopez a09598
	    scratch.height = pseudoramiXScreens[i].h;
Carlos Lopez a09598
Carlos Lopez a09598
	    if(client->swapped) {
Carlos Lopez a09598
		register int n;
Carlos Lopez a09598
		swaps (&scratch.x_org, n);
Carlos Lopez a09598
		swaps (&scratch.y_org, n);
Carlos Lopez a09598
		swaps (&scratch.width, n);
Carlos Lopez a09598
		swaps (&scratch.height, n);
Carlos Lopez a09598
	    }
Carlos Lopez a09598
	    WriteToClient (client, sz_XineramaScreenInfo, (char *) &scratch);
Carlos Lopez a09598
	}
Carlos Lopez a09598
    }
Carlos Lopez a09598
Carlos Lopez a09598
    return client->noClientException;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
// was PanoramiX
Carlos Lopez a09598
static int ProcPseudoramiXDispatch (ClientPtr client)
Carlos Lopez a09598
{   REQUEST(xReq);
Carlos Lopez a09598
    switch (stuff->data)
Carlos Lopez a09598
    {
Carlos Lopez a09598
	case X_PanoramiXQueryVersion:
Carlos Lopez a09598
	     return ProcPseudoramiXQueryVersion(client);
Carlos Lopez a09598
	case X_PanoramiXGetState:
Carlos Lopez a09598
	     return ProcPseudoramiXGetState(client);
Carlos Lopez a09598
	case X_PanoramiXGetScreenCount:
Carlos Lopez a09598
	     return ProcPseudoramiXGetScreenCount(client);
Carlos Lopez a09598
	case X_PanoramiXGetScreenSize:
Carlos Lopez a09598
	     return ProcPseudoramiXGetScreenSize(client);
Carlos Lopez a09598
	case X_XineramaIsActive:
Carlos Lopez a09598
	     return ProcPseudoramiXIsActive(client);
Carlos Lopez a09598
	case X_XineramaQueryScreens:
Carlos Lopez a09598
	     return ProcPseudoramiXQueryScreens(client);
Carlos Lopez a09598
    }
Carlos Lopez a09598
    return BadRequest;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
static int
Carlos Lopez a09598
SProcPseudoramiXQueryVersion (ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
	REQUEST(xPanoramiXQueryVersionReq);
Carlos Lopez a09598
	register int n;
Carlos Lopez a09598
Carlos Lopez a09598
	swaps(&stuff->length,n);
Carlos Lopez a09598
	REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq);
Carlos Lopez a09598
	return ProcPseudoramiXQueryVersion(client);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
static int
Carlos Lopez a09598
SProcPseudoramiXGetState(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
	REQUEST(xPanoramiXGetStateReq);
Carlos Lopez a09598
	register int n;
Carlos Lopez a09598
Carlos Lopez a09598
 	swaps (&stuff->length, n);
Carlos Lopez a09598
	REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
Carlos Lopez a09598
	return ProcPseudoramiXGetState(client);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
static int
Carlos Lopez a09598
SProcPseudoramiXGetScreenCount(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
	REQUEST(xPanoramiXGetScreenCountReq);
Carlos Lopez a09598
	register int n;
Carlos Lopez a09598
Carlos Lopez a09598
	swaps (&stuff->length, n);
Carlos Lopez a09598
	REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
Carlos Lopez a09598
	return ProcPseudoramiXGetScreenCount(client);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
static int
Carlos Lopez a09598
SProcPseudoramiXGetScreenSize(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
	REQUEST(xPanoramiXGetScreenSizeReq);
Carlos Lopez a09598
	register int n;
Carlos Lopez a09598
Carlos Lopez a09598
	swaps (&stuff->length, n);
Carlos Lopez a09598
	REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
Carlos Lopez a09598
	return ProcPseudoramiXGetScreenSize(client);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
static int
Carlos Lopez a09598
SProcPseudoramiXIsActive(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
	REQUEST(xXineramaIsActiveReq);
Carlos Lopez a09598
	register int n;
Carlos Lopez a09598
Carlos Lopez a09598
	swaps (&stuff->length, n);
Carlos Lopez a09598
	REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
Carlos Lopez a09598
	return ProcPseudoramiXIsActive(client);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
static int
Carlos Lopez a09598
SProcPseudoramiXQueryScreens(ClientPtr client)
Carlos Lopez a09598
{
Carlos Lopez a09598
	REQUEST(xXineramaQueryScreensReq);
Carlos Lopez a09598
	register int n;
Carlos Lopez a09598
Carlos Lopez a09598
	swaps (&stuff->length, n);
Carlos Lopez a09598
	REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
Carlos Lopez a09598
	return ProcPseudoramiXQueryScreens(client);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
static int
Carlos Lopez a09598
SProcPseudoramiXDispatch (ClientPtr client)
Carlos Lopez a09598
{   REQUEST(xReq);
Carlos Lopez a09598
    switch (stuff->data)
Carlos Lopez a09598
    {
Carlos Lopez a09598
	case X_PanoramiXQueryVersion:
Carlos Lopez a09598
	     return SProcPseudoramiXQueryVersion(client);
Carlos Lopez a09598
	case X_PanoramiXGetState:
Carlos Lopez a09598
	     return SProcPseudoramiXGetState(client);
Carlos Lopez a09598
	case X_PanoramiXGetScreenCount:
Carlos Lopez a09598
	     return SProcPseudoramiXGetScreenCount(client);
Carlos Lopez a09598
	case X_PanoramiXGetScreenSize:
Carlos Lopez a09598
	     return SProcPseudoramiXGetScreenSize(client);
Carlos Lopez a09598
	case X_XineramaIsActive:
Carlos Lopez a09598
	     return SProcPseudoramiXIsActive(client);
Carlos Lopez a09598
	case X_XineramaQueryScreens:
Carlos Lopez a09598
	     return SProcPseudoramiXQueryScreens(client);
Carlos Lopez a09598
    }
Carlos Lopez a09598
    return BadRequest;
Carlos Lopez a09598
}