|
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 |
}
|