Add Distributed Multihead X (DMX) support

This commit is contained in:
Kevin E Martin 2004-06-30 20:06:56 +00:00
commit 7976ee51af
447 changed files with 103260 additions and 52 deletions

View file

@ -1,4 +1,4 @@
/* $XdotOrg$ */
/* $XdotOrg: xc/programs/Xserver/dix/events.c,v 1.2 2004/04/23 19:04:44 eich Exp $ */
/* $XFree86: xc/programs/Xserver/dix/events.c,v 3.51 2004/01/12 17:04:52 tsi Exp $ */
/************************************************************
@ -2036,6 +2036,46 @@ WindowsRestructured()
(void) CheckMotion((xEvent *)NULL);
}
#ifdef PANORAMIX
/* This was added to support reconfiguration under Xdmx. The problem is
* that if the 0th screen (i.e., WindowTable[0]) is moved to an origin
* other than 0,0, the information in the private sprite structure must
* be updated accordingly, or XYToWindow (and other routines) will not
* compute correctly. */
void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff)
{
ScreenPtr pScreen = win->drawable.pScreen;
GrabPtr grab;
if (noPanoramiXExtension) return;
sprite.hot.x -= xoff;
sprite.hot.y -= yoff;
sprite.hotPhys.x -= xoff;
sprite.hotPhys.y -= yoff;
sprite.hotLimits.x1 -= xoff;
sprite.hotLimits.y1 -= yoff;
sprite.hotLimits.x2 -= xoff;
sprite.hotLimits.y2 -= yoff;
if (REGION_NOTEMPTY(sprite.screen, &sprite.Reg1))
REGION_TRANSLATE(sprite.screen, &sprite.Reg1, xoff, yoff);
if (REGION_NOTEMPTY(sprite.screen, &sprite.Reg2))
REGION_TRANSLATE(sprite.screen, &sprite.Reg2, xoff, yoff);
/* FIXME: if we call ConfineCursorToWindow, must we do anything else? */
if ((grab = inputInfo.pointer->grab) && grab->confineTo) {
if (grab->confineTo->drawable.pScreen != sprite.hotPhys.pScreen)
sprite.hotPhys.x = sprite.hotPhys.y = 0;
ConfineCursorToWindow(grab->confineTo, TRUE, TRUE);
} else
ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum],
TRUE, FALSE);
}
#endif
void
DefineInitialRootWindow(win)
register WindowPtr win;

View file

@ -1,4 +1,4 @@
/* $XdotOrg: xc/programs/Xserver/dix/main.c,v 1.1.4.5.2.4.6.1 2004/04/20 03:27:08 gisburn Exp $ */
/* $XdotOrg: xc/programs/Xserver/dix/main.c,v 1.2 2004/04/23 19:04:44 eich Exp $ */
/* $XFree86: xc/programs/Xserver/dix/main.c,v 3.43 2003/10/30 21:21:02 herrb Exp $ */
/***********************************************************
@ -500,6 +500,21 @@ main(int argc, char *argv[], char *envp[])
return(0);
}
static int VendorRelease = VENDOR_RELEASE;
static char *VendorString = VENDOR_STRING;
void
SetVendorRelease(int release)
{
VendorRelease = release;
}
void
SetVendorString(char *string)
{
VendorString = string;
}
static int padlength[4] = {0, 3, 2, 1};
#ifndef PANORAMIX
@ -523,7 +538,7 @@ CreateConnectionBlock()
/* Leave off the ridBase and ridMask, these must be sent with
connection */
setup.release = VENDOR_RELEASE;
setup.release = VendorRelease;
/*
* per-server image and bitmap parameters are defined in Xmd.h
*/
@ -535,7 +550,7 @@ CreateConnectionBlock()
setup.bitmapBitOrder = screenInfo.bitmapBitOrder;
setup.motionBufferSize = NumMotionEvents();
setup.numRoots = screenInfo.numScreens;
setup.nbytesVendor = strlen(VENDOR_STRING);
setup.nbytesVendor = strlen(VendorString);
setup.numFormats = screenInfo.numPixmapFormats;
setup.maxRequestSize = MAX_REQUEST_SIZE;
QueryMinMaxKeyCodes(&setup.minKeyCode, &setup.maxKeyCode);
@ -552,7 +567,7 @@ CreateConnectionBlock()
sizesofar = sizeof(xConnSetup);
pBuf = ConnectionInfo + sizeof(xConnSetup);
memmove(pBuf, VENDOR_STRING, (int)setup.nbytesVendor);
memmove(pBuf, VendorString, (int)setup.nbytesVendor);
sizesofar += setup.nbytesVendor;
pBuf += setup.nbytesVendor;
i = padlength[setup.nbytesVendor & 3];