Commit c61bb8cc authored by Mike Gabriel's avatar Mike Gabriel

Move each screen's root-window pointer into ScreenRec.

Backported from X.org: commit e7fae9ecc42ab5e73b89117722dbf4117d928f9a Author: Jamey Sharp <jamey@minilop.net> Date: Sat May 22 00:26:28 2010 -0700 Move each screen's root-window pointer into ScreenRec. Many references to the WindowTable array already had the corresponding screen pointer handy, which meant they usually looked like "WindowTable[pScreen->myNum]". Adding a field to ScreenRec instead of keeping this information in a parallel array simplifies those expressions, and eliminates a MAXSCREENS-sized array. Since dix uses this data, a screen private entry isn't appropriate. xf86-video-dummy currently uses WindowTable, so it needs to be updated to reflect this change. Signed-off-by: 's avatarJamey Sharp <jamey@minilop.net> Reviewed-by: 's avatarTiago Vignatti <tiago.vignatti@nokia.com> Tested-by: Tiago Vignatti <tiago.vignatti@nokia.com> (i686 GNU/Linux) Backport to nx-libs: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
parent 590862d3
...@@ -896,7 +896,7 @@ void PanoramiXConsolidate(void) ...@@ -896,7 +896,7 @@ void PanoramiXConsolidate(void)
for (i = 0; i < PanoramiXNumScreens; i++) { for (i = 0; i < PanoramiXNumScreens; i++) {
root->info[i].id = WindowTable[i]->drawable.id; root->info[i].id = screenInfo.screens[i]->root->drawable.id;
root->u.win.class = InputOutput; root->u.win.class = InputOutput;
root->u.win.root = TRUE; root->u.win.root = TRUE;
saver->info[i].id = savedScreenInfo[i].wid; saver->info[i].id = savedScreenInfo[i].wid;
......
...@@ -89,11 +89,11 @@ typedef struct { ...@@ -89,11 +89,11 @@ typedef struct {
#define FORCE_ROOT(a) { \ #define FORCE_ROOT(a) { \
int _j; \ int _j; \
for (_j = PanoramiXNumScreens - 1; _j; _j--) \ for (_j = PanoramiXNumScreens - 1; _j; _j--) \
if ((a).root == WindowTable[_j]->drawable.id) \ if ((a).root == screenInfo.screens[_j]->root->drawable.id) \
break; \ break; \
(a).rootX += panoramiXdataPtr[_j].x; \ (a).rootX += panoramiXdataPtr[_j].x; \
(a).rootY += panoramiXdataPtr[_j].y; \ (a).rootY += panoramiXdataPtr[_j].y; \
(a).root = WindowTable[0]->drawable.id; \ (a).root = screenInfo.screens[0]->root->drawable.id; \
} }
#define FORCE_WIN(a) { \ #define FORCE_WIN(a) { \
......
...@@ -146,7 +146,7 @@ int PanoramiXCreateWindow(ClientPtr client) ...@@ -146,7 +146,7 @@ int PanoramiXCreateWindow(ClientPtr client)
orig_visual = stuff->visual; orig_visual = stuff->visual;
orig_x = stuff->x; orig_x = stuff->x;
orig_y = stuff->y; orig_y = stuff->y;
parentIsRoot = (stuff->parent == WindowTable[0]->drawable.id) || parentIsRoot = (stuff->parent == screenInfo.screens[0]->root->drawable.id) ||
(stuff->parent == savedScreenInfo[0].wid); (stuff->parent == savedScreenInfo[0].wid);
FOR_NSCREENS_BACKWARD(j) { FOR_NSCREENS_BACKWARD(j) {
stuff->wid = newWin->info[j].id; stuff->wid = newWin->info[j].id;
...@@ -336,7 +336,7 @@ int PanoramiXReparentWindow(ClientPtr client) ...@@ -336,7 +336,7 @@ int PanoramiXReparentWindow(ClientPtr client)
x = stuff->x; x = stuff->x;
y = stuff->y; y = stuff->y;
parentIsRoot = (stuff->parent == WindowTable[0]->drawable.id) || parentIsRoot = (stuff->parent == screenInfo.screens[0]->root->drawable.id) ||
(stuff->parent == savedScreenInfo[0].wid); (stuff->parent == savedScreenInfo[0].wid);
FOR_NSCREENS_BACKWARD(j) { FOR_NSCREENS_BACKWARD(j) {
stuff->window = win->info[j].id; stuff->window = win->info[j].id;
...@@ -476,7 +476,7 @@ int PanoramiXConfigureWindow(ClientPtr client) ...@@ -476,7 +476,7 @@ int PanoramiXConfigureWindow(ClientPtr client)
} }
} }
if(pWin->parent && ((pWin->parent == WindowTable[0]) || if(pWin->parent && ((pWin->parent == screenInfo.screens[0]->root) ||
(pWin->parent->drawable.id == savedScreenInfo[0].wid))) (pWin->parent->drawable.id == savedScreenInfo[0].wid)))
{ {
if ((Mask)stuff->mask & CWX) { if ((Mask)stuff->mask & CWX) {
...@@ -540,7 +540,7 @@ int PanoramiXGetGeometry(ClientPtr client) ...@@ -540,7 +540,7 @@ int PanoramiXGetGeometry(ClientPtr client)
rep.type = X_Reply; rep.type = X_Reply;
rep.length = 0; rep.length = 0;
rep.sequenceNumber = client->sequence; rep.sequenceNumber = client->sequence;
rep.root = WindowTable[0]->drawable.id; rep.root = screenInfo.screens[0]->root->drawable.id;
rep.depth = pDraw->depth; rep.depth = pDraw->depth;
rep.width = pDraw->width; rep.width = pDraw->width;
rep.height = pDraw->height; rep.height = pDraw->height;
...@@ -558,7 +558,7 @@ int PanoramiXGetGeometry(ClientPtr client) ...@@ -558,7 +558,7 @@ int PanoramiXGetGeometry(ClientPtr client)
WindowPtr pWin = (WindowPtr)pDraw; WindowPtr pWin = (WindowPtr)pDraw;
rep.x = pWin->origin.x - wBorderWidth (pWin); rep.x = pWin->origin.x - wBorderWidth (pWin);
rep.y = pWin->origin.y - wBorderWidth (pWin); rep.y = pWin->origin.y - wBorderWidth (pWin);
if((pWin->parent == WindowTable[0]) || if((pWin->parent == screenInfo.screens[0]->root) ||
(pWin->parent->drawable.id == savedScreenInfo[0].wid)) (pWin->parent->drawable.id == savedScreenInfo[0].wid))
{ {
rep.x += panoramiXdataPtr[0].x; rep.x += panoramiXdataPtr[0].x;
...@@ -594,7 +594,7 @@ int PanoramiXTranslateCoords(ClientPtr client) ...@@ -594,7 +594,7 @@ int PanoramiXTranslateCoords(ClientPtr client)
rep.sameScreen = xTrue; rep.sameScreen = xTrue;
rep.child = None; rep.child = None;
if((pWin == WindowTable[0]) || if((pWin == screenInfo.screens[0]->root) ||
(pWin->drawable.id == savedScreenInfo[0].wid)) (pWin->drawable.id == savedScreenInfo[0].wid))
{ {
x = stuff->srcX - panoramiXdataPtr[0].x; x = stuff->srcX - panoramiXdataPtr[0].x;
...@@ -636,7 +636,7 @@ int PanoramiXTranslateCoords(ClientPtr client) ...@@ -636,7 +636,7 @@ int PanoramiXTranslateCoords(ClientPtr client)
} }
rep.dstX = x - pDst->drawable.x; rep.dstX = x - pDst->drawable.x;
rep.dstY = y - pDst->drawable.y; rep.dstY = y - pDst->drawable.y;
if((pDst == WindowTable[0]) || if((pDst == screenInfo.screens[0]->root) ||
(pDst->drawable.id == savedScreenInfo[0].wid)) (pDst->drawable.id == savedScreenInfo[0].wid))
{ {
rep.dstX += panoramiXdataPtr[0].x; rep.dstX += panoramiXdataPtr[0].x;
......
...@@ -473,7 +473,7 @@ SendScreenSaverNotify (pScreen, state, forced) ...@@ -473,7 +473,7 @@ SendScreenSaverNotify (pScreen, state, forced)
ev.state = state; ev.state = state;
ev.sequenceNumber = client->sequence; ev.sequenceNumber = client->sequence;
ev.timestamp = currentTime.milliseconds; ev.timestamp = currentTime.milliseconds;
ev.root = WindowTable[pScreen->myNum]->drawable.id; ev.root = pScreen->root->drawable.id;
ev.window = savedScreenInfo[pScreen->myNum].wid; ev.window = savedScreenInfo[pScreen->myNum].wid;
ev.kind = kind; ev.kind = kind;
ev.forced = forced; ev.forced = forced;
...@@ -549,7 +549,7 @@ CreateSaverWindow (pScreen) ...@@ -549,7 +549,7 @@ CreateSaverWindow (pScreen)
if (GrabInProgress && GrabInProgress != pAttr->client->index) if (GrabInProgress && GrabInProgress != pAttr->client->index)
return FALSE; return FALSE;
pWin = CreateWindow (pSaver->wid, WindowTable[pScreen->myNum], pWin = CreateWindow (pSaver->wid, pScreen->root,
pAttr->x, pAttr->y, pAttr->width, pAttr->height, pAttr->x, pAttr->y, pAttr->width, pAttr->height,
pAttr->borderWidth, pAttr->class, pAttr->borderWidth, pAttr->class,
pAttr->mask, (XID *)pAttr->values, pAttr->mask, (XID *)pAttr->values,
...@@ -830,7 +830,7 @@ ScreenSaverSetAttributes (ClientPtr client) ...@@ -830,7 +830,7 @@ ScreenSaverSetAttributes (ClientPtr client)
if (!pDraw) if (!pDraw)
return BadDrawable; return BadDrawable;
pScreen = pDraw->pScreen; pScreen = pDraw->pScreen;
pParent = WindowTable[pScreen->myNum]; pParent = pScreen->root;
len = stuff->length - (sizeof(xScreenSaverSetAttributesReq) >> 2); len = stuff->length - (sizeof(xScreenSaverSetAttributesReq) >> 2);
if (Ones(stuff->mask) != len) if (Ones(stuff->mask) != len)
......
...@@ -409,7 +409,7 @@ ProcXTestFakeInput(client) ...@@ -409,7 +409,7 @@ ProcXTestFakeInput(client)
if (RegionContainsPoint( if (RegionContainsPoint(
&XineramaScreenRegions[i], &XineramaScreenRegions[i],
x, y, &box)) { x, y, &box)) {
root = WindowTable[i]; root = screenInfo.screens[i]->root;
x -= panoramiXdataPtr[i].x; x -= panoramiXdataPtr[i].x;
y -= panoramiXdataPtr[i].y; y -= panoramiXdataPtr[i].y;
ev->u.keyButtonPointer.rootX = x; ev->u.keyButtonPointer.rootX = x;
......
...@@ -208,7 +208,7 @@ SendEventToAllWindows (dev, mask, ev, count) ...@@ -208,7 +208,7 @@ SendEventToAllWindows (dev, mask, ev, count)
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
{ {
pWin = WindowTable[i]; pWin = screenInfo.screens[i]->root;
(void)DeliverEventsToWindow(pWin, ev, count, mask, NullGrab, dev->id); (void)DeliverEventsToWindow(pWin, ev, count, mask, NullGrab, dev->id);
p1 = pWin->firstChild; p1 = pWin->firstChild;
FindInterestedChildren (dev, p1, mask, ev, count); FindInterestedChildren (dev, p1, mask, ev, count);
......
...@@ -124,7 +124,7 @@ ProcXCloseDevice(client) ...@@ -124,7 +124,7 @@ ProcXCloseDevice(client)
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
{ {
pWin = WindowTable[i]; pWin = screenInfo.screens[i]->root;
DeleteDeviceEvents (d, pWin, client); DeleteDeviceEvents (d, pWin, client);
p1 = pWin->firstChild; p1 = pWin->firstChild;
DeleteEventsFromChildren (d, p1, client); DeleteEventsFromChildren (d, p1, client);
......
...@@ -32,7 +32,7 @@ static void ...@@ -32,7 +32,7 @@ static void
compScreenUpdate(ScreenPtr pScreen) compScreenUpdate(ScreenPtr pScreen)
{ {
compCheckTree(pScreen); compCheckTree(pScreen);
compPaintChildrenToWindow(pScreen, WindowTable[pScreen->myNum]); compPaintChildrenToWindow(pScreen, pScreen->root);
} }
static void static void
......
...@@ -129,7 +129,7 @@ Bool ...@@ -129,7 +129,7 @@ Bool
compCreateOverlayWindow(ScreenPtr pScreen) compCreateOverlayWindow(ScreenPtr pScreen)
{ {
CompScreenPtr cs = GetCompScreen(pScreen); CompScreenPtr cs = GetCompScreen(pScreen);
WindowPtr pRoot = WindowTable[pScreen->myNum]; WindowPtr pRoot = pScreen->root;
WindowPtr pWin; WindowPtr pWin;
XID attrs[] = { None, TRUE }; /* backPixmap, overrideRedirect */ XID attrs[] = { None, TRUE }; /* backPixmap, overrideRedirect */
int result; int result;
......
...@@ -234,8 +234,8 @@ FlushClientCaches(XID id) ...@@ -234,8 +234,8 @@ FlushClientCaches(XID id)
{ {
if (client->lastDrawableID == id) if (client->lastDrawableID == id)
{ {
client->lastDrawableID = WindowTable[0]->drawable.id; client->lastDrawableID = screenInfo.screens[0]->root->drawable.id;
client->lastDrawable = (DrawablePtr)WindowTable[0]; client->lastDrawable = (DrawablePtr)screenInfo.screens[0]->root;
} }
else if (client->lastGCID == id) else if (client->lastGCID == id)
{ {
...@@ -793,7 +793,7 @@ GetGeometry(register ClientPtr client, xGetGeometryReply *rep) ...@@ -793,7 +793,7 @@ GetGeometry(register ClientPtr client, xGetGeometryReply *rep)
rep->type = X_Reply; rep->type = X_Reply;
rep->length = 0; rep->length = 0;
rep->sequenceNumber = client->sequence; rep->sequenceNumber = client->sequence;
rep->root = WindowTable[pDraw->pScreen->myNum]->drawable.id; rep->root = pDraw->pScreen->root->drawable.id;
rep->depth = pDraw->depth; rep->depth = pDraw->depth;
rep->width = pDraw->width; rep->width = pDraw->width;
rep->height = pDraw->height; rep->height = pDraw->height;
...@@ -854,7 +854,7 @@ ProcQueryTree(register ClientPtr client) ...@@ -854,7 +854,7 @@ ProcQueryTree(register ClientPtr client)
return(BadWindow); return(BadWindow);
memset(&reply, 0, sizeof(xQueryTreeReply)); memset(&reply, 0, sizeof(xQueryTreeReply));
reply.type = X_Reply; reply.type = X_Reply;
reply.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id; reply.root = pWin->drawable.pScreen->root->drawable.id;
reply.sequenceNumber = client->sequence; reply.sequenceNumber = client->sequence;
if (pWin->parent) if (pWin->parent)
reply.parent = pWin->parent->drawable.id; reply.parent = pWin->parent->drawable.id;
...@@ -3633,8 +3633,8 @@ void InitClient(ClientPtr client, int i, void * ospriv) ...@@ -3633,8 +3633,8 @@ void InitClient(ClientPtr client, int i, void * ospriv)
if (i) if (i)
{ {
client->closeDownMode = DestroyAll; client->closeDownMode = DestroyAll;
client->lastDrawable = (DrawablePtr)WindowTable[0]; client->lastDrawable = (DrawablePtr)screenInfo.screens[0]->root;
client->lastDrawableID = WindowTable[0]->drawable.id; client->lastDrawableID = screenInfo.screens[0]->root->drawable.id;
} }
else else
{ {
...@@ -3853,8 +3853,8 @@ SendConnSetup(register ClientPtr client, char *reason) ...@@ -3853,8 +3853,8 @@ SendConnSetup(register ClientPtr client, char *reason)
register unsigned int j; register unsigned int j;
register xDepth *pDepth; register xDepth *pDepth;
root->currentInputMask = WindowTable[i]->eventMask | root->currentInputMask = screenInfo.screens[i]->root->eventMask |
wOtherEventMasks (WindowTable[i]); wOtherEventMasks (screenInfo.screens[i]->root);
pDepth = (xDepth *)(root + 1); pDepth = (xDepth *)(root + 1);
for (j = 0; j < root->nDepths; j++) for (j = 0; j < root->nDepths; j++)
{ {
......
...@@ -413,9 +413,10 @@ XineramaCheckPhysLimits( ...@@ -413,9 +413,10 @@ XineramaCheckPhysLimits(
static Bool static Bool
XineramaSetWindowPntrs(WindowPtr pWin) XineramaSetWindowPntrs(WindowPtr pWin)
{ {
if(pWin == WindowTable[0]) { if(pWin == screenInfo.screens[0]->root) {
memcpy(sprite.windows, WindowTable, int i;
PanoramiXNumScreens*sizeof(WindowPtr)); for (i = 0; i < PanoramiXNumScreens; i++)
sprite.windows[i] = screenInfo.screens[i]->root;
} else { } else {
PanoramiXRes *win; PanoramiXRes *win;
int i; int i;
...@@ -601,7 +602,7 @@ XineramaConfineCursorToWindow(WindowPtr pWin, Bool generateEvents) ...@@ -601,7 +602,7 @@ XineramaConfineCursorToWindow(WindowPtr pWin, Bool generateEvents)
sprite.hotShape = NullRegion; sprite.hotShape = NullRegion;
sprite.confined = FALSE; sprite.confined = FALSE;
sprite.confineWin = (pWin == WindowTable[0]) ? NullWindow : pWin; sprite.confineWin = (pWin == screenInfo.screens[0]->root) ? NullWindow : pWin;
XineramaCheckPhysLimits(sprite.current, generateEvents); XineramaCheckPhysLimits(sprite.current, generateEvents);
} }
...@@ -797,7 +798,7 @@ CheckVirtualMotion( ...@@ -797,7 +798,7 @@ CheckVirtualMotion(
qe->event->u.keyButtonPointer.rootY = sprite.hot.y; qe->event->u.keyButtonPointer.rootY = sprite.hot.y;
} }
} }
ROOT = WindowTable[sprite.hot.pScreen->myNum]; ROOT = sprite.hot.pScreen->root;
} }
static void static void
...@@ -997,7 +998,7 @@ EnqueueEvent(xEvent *xE, DeviceIntPtr device, int count) ...@@ -997,7 +998,7 @@ EnqueueEvent(xEvent *xE, DeviceIntPtr device, int count)
*/ */
if (xE->u.u.type == MotionNotify) if (xE->u.u.type == MotionNotify)
XE_KBPTR.root = XE_KBPTR.root =
WindowTable[sprite.hotPhys.pScreen->myNum]->drawable.id; sprite.hotPhys.pScreen->root->drawable.id;
eventinfo.events = xE; eventinfo.events = xE;
eventinfo.count = count; eventinfo.count = count;
CallCallbacks(&DeviceEventCallback, (void *)&eventinfo); CallCallbacks(&DeviceEventCallback, (void *)&eventinfo);
...@@ -1160,7 +1161,7 @@ playmore: ...@@ -1160,7 +1161,7 @@ playmore:
ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); ConfineCursorToWindow(grab->confineTo, TRUE, TRUE);
} }
else else
ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], ConfineCursorToWindow(sprite.hotPhys.pScreen->root,
TRUE, FALSE); TRUE, FALSE);
PostNewCursor(); PostNewCursor();
} }
...@@ -1178,7 +1179,7 @@ ScreenRestructured (ScreenPtr pScreen) ...@@ -1178,7 +1179,7 @@ ScreenRestructured (ScreenPtr pScreen)
ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); ConfineCursorToWindow(grab->confineTo, TRUE, TRUE);
} }
else else
ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], ConfineCursorToWindow(sprite.hotPhys.pScreen->root,
TRUE, FALSE); TRUE, FALSE);
} }
#endif #endif
...@@ -1976,7 +1977,7 @@ CheckMotion(xEvent *xE) ...@@ -1976,7 +1977,7 @@ CheckMotion(xEvent *xE)
if (sprite.hot.pScreen != sprite.hotPhys.pScreen) if (sprite.hot.pScreen != sprite.hotPhys.pScreen)
{ {
sprite.hot.pScreen = sprite.hotPhys.pScreen; sprite.hot.pScreen = sprite.hotPhys.pScreen;
ROOT = WindowTable[sprite.hot.pScreen->myNum]; ROOT = sprite.hot.pScreen->root;
} }
sprite.hot.x = XE_KBPTR.rootX; sprite.hot.x = XE_KBPTR.rootX;
sprite.hot.y = XE_KBPTR.rootY; sprite.hot.y = XE_KBPTR.rootY;
...@@ -2034,7 +2035,7 @@ WindowsRestructured() ...@@ -2034,7 +2035,7 @@ WindowsRestructured()
#ifdef PANORAMIX #ifdef PANORAMIX
/* This was added to support reconfiguration under Xdmx. The problem is /* 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 * that if the 0th screen (i.e., screenInfo.screens[0]->root) is moved to an origin
* other than 0,0, the information in the private sprite structure must * other than 0,0, the information in the private sprite structure must
* be updated accordingly, or XYToWindow (and other routines) will not * be updated accordingly, or XYToWindow (and other routines) will not
* compute correctly. */ * compute correctly. */
...@@ -2067,7 +2068,7 @@ void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff) ...@@ -2067,7 +2068,7 @@ void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff)
sprite.hotPhys.x = sprite.hotPhys.y = 0; sprite.hotPhys.x = sprite.hotPhys.y = 0;
ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); ConfineCursorToWindow(grab->confineTo, TRUE, TRUE);
} else } else
ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], ConfineCursorToWindow(sprite.hotPhys.pScreen->root,
TRUE, FALSE); TRUE, FALSE);
} }
#endif #endif
...@@ -2144,7 +2145,7 @@ NewCurrentScreen(ScreenPtr newScreen, int x, int y) ...@@ -2144,7 +2145,7 @@ NewCurrentScreen(ScreenPtr newScreen, int x, int y)
if(sprite.confineWin) if(sprite.confineWin)
XineramaConfineCursorToWindow(sprite.confineWin, TRUE); XineramaConfineCursorToWindow(sprite.confineWin, TRUE);
else else
XineramaConfineCursorToWindow(WindowTable[0], TRUE); XineramaConfineCursorToWindow(screenInfo.screens[0]->root, TRUE);
/* if the pointer wasn't confined, the DDX won't get /* if the pointer wasn't confined, the DDX won't get
told of the pointer warp so we reposition it here */ told of the pointer warp so we reposition it here */
if(!syncEvents.playingEvents) if(!syncEvents.playingEvents)
...@@ -2157,7 +2158,7 @@ NewCurrentScreen(ScreenPtr newScreen, int x, int y) ...@@ -2157,7 +2158,7 @@ NewCurrentScreen(ScreenPtr newScreen, int x, int y)
} else } else
#endif #endif
if (newScreen != sprite.hotPhys.pScreen) if (newScreen != sprite.hotPhys.pScreen)
ConfineCursorToWindow(WindowTable[newScreen->myNum], TRUE, FALSE); ConfineCursorToWindow(newScreen->root, TRUE, FALSE);
} }
#ifdef PANORAMIX #ifdef PANORAMIX
...@@ -2231,7 +2232,7 @@ XineramaWarpPointer(ClientPtr client) ...@@ -2231,7 +2232,7 @@ XineramaWarpPointer(ClientPtr client)
winX = source->drawable.x; winX = source->drawable.x;
winY = source->drawable.y; winY = source->drawable.y;
if(source == WindowTable[0]) { if(source == screenInfo.screens[0]->root) {
winX -= panoramiXdataPtr[0].x; winX -= panoramiXdataPtr[0].x;
winY -= panoramiXdataPtr[0].y; winY -= panoramiXdataPtr[0].y;
} }
...@@ -2247,7 +2248,7 @@ XineramaWarpPointer(ClientPtr client) ...@@ -2247,7 +2248,7 @@ XineramaWarpPointer(ClientPtr client)
if (dest) { if (dest) {
x = dest->drawable.x; x = dest->drawable.x;
y = dest->drawable.y; y = dest->drawable.y;
if(dest == WindowTable[0]) { if(dest == screenInfo.screens[0]->root) {
x -= panoramiXdataPtr[0].x; x -= panoramiXdataPtr[0].x;
y -= panoramiXdataPtr[0].y; y -= panoramiXdataPtr[0].y;
} }
...@@ -2822,7 +2823,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count ...@@ -2822,7 +2823,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
/* see comment in EnqueueEvents regarding the next three lines */ /* see comment in EnqueueEvents regarding the next three lines */
if (xE->u.u.type == MotionNotify) if (xE->u.u.type == MotionNotify)
XE_KBPTR.root = XE_KBPTR.root =
WindowTable[sprite.hotPhys.pScreen->myNum]->drawable.id; sprite.hotPhys.pScreen->root->drawable.id;
eventinfo.events = xE; eventinfo.events = xE;
eventinfo.count = count; eventinfo.count = count;
CallCallbacks(&DeviceEventCallback, (void *)&eventinfo); CallCallbacks(&DeviceEventCallback, (void *)&eventinfo);
...@@ -3356,11 +3357,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode) ...@@ -3356,11 +3357,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode)
/* Notify all the roots */ /* Notify all the roots */
#ifdef PANORAMIX #ifdef PANORAMIX
if ( !noPanoramiXExtension ) if ( !noPanoramiXExtension )
FocusEvent(dev, FocusOut, mode, out, WindowTable[0]); FocusEvent(dev, FocusOut, mode, out, screenInfo.screens[0]->root);
else else
#endif #endif
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
FocusEvent(dev, FocusOut, mode, out, WindowTable[i]); FocusEvent(dev, FocusOut, mode, out, screenInfo.screens[i]->root);
} }
else else
{ {
...@@ -3375,11 +3376,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode) ...@@ -3375,11 +3376,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode)
/* Notify all the roots */ /* Notify all the roots */
#ifdef PANORAMIX #ifdef PANORAMIX
if ( !noPanoramiXExtension ) if ( !noPanoramiXExtension )
FocusEvent(dev, FocusIn, mode, in, WindowTable[0]); FocusEvent(dev, FocusIn, mode, in, screenInfo.screens[0]->root);
else else
#endif #endif
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
FocusEvent(dev, FocusIn, mode, in, WindowTable[i]); FocusEvent(dev, FocusIn, mode, in, screenInfo.screens[i]->root);
if (toWin == PointerRootWin) if (toWin == PointerRootWin)
(void)FocusInEvents(dev, ROOT, sprite.win, NullWindow, mode, (void)FocusInEvents(dev, ROOT, sprite.win, NullWindow, mode,
NotifyPointer, TRUE); NotifyPointer, TRUE);
...@@ -3393,11 +3394,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode) ...@@ -3393,11 +3394,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode)
TRUE); TRUE);
#ifdef PANORAMIX #ifdef PANORAMIX
if ( !noPanoramiXExtension ) if ( !noPanoramiXExtension )
FocusEvent(dev, FocusOut, mode, out, WindowTable[0]); FocusEvent(dev, FocusOut, mode, out, screenInfo.screens[0]->root);
else else
#endif #endif
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
FocusEvent(dev, FocusOut, mode, out, WindowTable[i]); FocusEvent(dev, FocusOut, mode, out, screenInfo.screens[i]->root);
if (toWin->parent != NullWindow) if (toWin->parent != NullWindow)
(void)FocusInEvents(dev, ROOT, toWin, toWin, mode, (void)FocusInEvents(dev, ROOT, toWin, toWin, mode,
NotifyNonlinearVirtual, TRUE); NotifyNonlinearVirtual, TRUE);
......
...@@ -86,8 +86,6 @@ ClientPtr serverClient; ...@@ -86,8 +86,6 @@ ClientPtr serverClient;
int currentMaxClients; /* current size of clients array */ int currentMaxClients; /* current size of clients array */
long maxBigRequestSize = MAX_BIG_REQUEST_SIZE; long maxBigRequestSize = MAX_BIG_REQUEST_SIZE;
WindowPtr *WindowTable;
unsigned long globalSerialNumber = 0; unsigned long globalSerialNumber = 0;
unsigned long serverGeneration = 0; unsigned long serverGeneration = 0;
......
...@@ -332,9 +332,6 @@ main(int argc, char *argv[], char *envp[]) ...@@ -332,9 +332,6 @@ main(int argc, char *argv[], char *envp[])
screenInfo.arraySize = MAXSCREENS; screenInfo.arraySize = MAXSCREENS;
screenInfo.numScreens = 0; screenInfo.numScreens = 0;
screenInfo.numVideoScreens = -1; screenInfo.numVideoScreens = -1;
WindowTable = (WindowPtr *)xalloc(MAXSCREENS * sizeof(WindowPtr));
if (!WindowTable)
FatalError("couldn't create root window table");
/* /*
* Just in case the ddx doesnt supply a format for depth 1 (like qvss). * Just in case the ddx doesnt supply a format for depth 1 (like qvss).
...@@ -419,8 +416,8 @@ main(int argc, char *argv[], char *envp[]) ...@@ -419,8 +416,8 @@ main(int argc, char *argv[], char *envp[])
#endif #endif
for (i = 0; i < screenInfo.numScreens; i++) for (i = 0; i < screenInfo.numScreens; i++)
InitRootWindow(WindowTable[i]); InitRootWindow(screenInfo.screens[i]->root);
DefineInitialRootWindow(WindowTable[0]); DefineInitialRootWindow(screenInfo.screens[0]->root);
SaveScreens(SCREEN_SAVER_FORCER, ScreenSaverReset); SaveScreens(SCREEN_SAVER_FORCER, ScreenSaverReset);
#ifdef DPMSExtension #ifdef DPMSExtension
SetDPMSTimers(); SetDPMSTimers();
...@@ -456,7 +453,11 @@ main(int argc, char *argv[], char *envp[]) ...@@ -456,7 +453,11 @@ main(int argc, char *argv[], char *envp[])
FreeAllResources(); FreeAllResources();
#endif #endif
for (i = 0; i < screenInfo.numScreens; i++)
screenInfo.screens[i]->root = NullWindow;
CloseDownDevices(); CloseDownDevices();
CloseDownEvents();
for (i = screenInfo.numScreens - 1; i >= 0; i--) for (i = screenInfo.numScreens - 1; i >= 0; i--)
{ {
FreeScratchPixmapsForScreen(i); FreeScratchPixmapsForScreen(i);
...@@ -466,9 +467,6 @@ main(int argc, char *argv[], char *envp[]) ...@@ -466,9 +467,6 @@ main(int argc, char *argv[], char *envp[])
FreeScreen(screenInfo.screens[i]); FreeScreen(screenInfo.screens[i]);
screenInfo.numScreens = i; screenInfo.numScreens = i;
} }
CloseDownEvents();
xfree(WindowTable);
WindowTable = NULL;
FreeFonts(); FreeFonts();
#ifdef DPMSExtension #ifdef DPMSExtension
...@@ -595,7 +593,7 @@ CreateConnectionBlock() ...@@ -595,7 +593,7 @@ CreateConnectionBlock()
VisualPtr pVisual; VisualPtr pVisual;
pScreen = screenInfo.screens[i]; pScreen = screenInfo.screens[i];
root.windowId = WindowTable[i]->drawable.id; root.windowId = screenInfo.screens[i]->root->drawable.id;
root.defaultColormap = pScreen->defColormap; root.defaultColormap = pScreen->defColormap;
root.whitePixel = pScreen->whitePixel; root.whitePixel = pScreen->whitePixel;
root.blackPixel = pScreen->blackPixel; root.blackPixel = pScreen->blackPixel;
...@@ -769,7 +767,6 @@ AddScreen( ...@@ -769,7 +767,6 @@ AddScreen(
multiple screens. multiple screens.
*/ */
pScreen->rgf = ~0L; /* there are no scratch GCs yet*/ pScreen->rgf = ~0L; /* there are no scratch GCs yet*/
WindowTable[i] = NullWindow;
screenInfo.screens[i] = pScreen; screenInfo.screens[i] = pScreen;
screenInfo.numScreens++; screenInfo.numScreens++;
if (!(*pfnInit)(i, pScreen, argc, argv)) if (!(*pfnInit)(i, pScreen, argc, argv))
...@@ -784,6 +781,7 @@ AddScreen( ...@@ -784,6 +781,7 @@ AddScreen(
static void static void
FreeScreen(ScreenPtr pScreen) FreeScreen(ScreenPtr pScreen)
{ {
pScreen->root = NullWindow;
xfree(pScreen->WindowPrivateSizes); xfree(pScreen->WindowPrivateSizes);
xfree(pScreen->GCPrivateSizes); xfree(pScreen->GCPrivateSizes);
#ifdef PIXPRIV #ifdef PIXPRIV
......
...@@ -544,8 +544,8 @@ FreeResource(XID id, RESTYPE skipDeleteFuncType) ...@@ -544,8 +544,8 @@ FreeResource(XID id, RESTYPE skipDeleteFuncType)
} }
if(clients[cid] && (id == clients[cid]->lastDrawableID)) if(clients[cid] && (id == clients[cid]->lastDrawableID))
{ {
clients[cid]->lastDrawable = (DrawablePtr)WindowTable[0]; clients[cid]->lastDrawable = (DrawablePtr)screenInfo.screens[0]->root;
clients[cid]->lastDrawableID = WindowTable[0]->drawable.id; clients[cid]->lastDrawableID = screenInfo.screens[0]->root->drawable.id;
} }
} }
if (!gotOne) if (!gotOne)
...@@ -582,8 +582,8 @@ FreeResourceByType(XID id, RESTYPE type, Bool skipFree) ...@@ -582,8 +582,8 @@ FreeResourceByType(XID id, RESTYPE type, Bool skipFree)
} }
if(clients[cid] && (id == clients[cid]->lastDrawableID)) if(clients[cid] && (id == clients[cid]->lastDrawableID))
{ {
clients[cid]->lastDrawable = (DrawablePtr)WindowTable[0]; clients[cid]->lastDrawable = (DrawablePtr)screenInfo.screens[0]->root;
clients[cid]->lastDrawableID = WindowTable[0]->drawable.id; clients[cid]->lastDrawableID = screenInfo.screens[0]->root->drawable.id;
} }
} }
} }
......
...@@ -191,7 +191,7 @@ PrintWindowTree() ...@@ -191,7 +191,7 @@ PrintWindowTree()
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
{ {
ErrorF( "WINDOW %d\n", i); ErrorF( "WINDOW %d\n", i);
pWin = WindowTable[i]; pWin = screenInfo.screens[i]->root;
RegionPrint(&pWin->clipList); RegionPrint(&pWin->clipList);
p1 = pWin->firstChild; p1 = pWin->firstChild;
PrintChildren(p1, 4); PrintChildren(p1, 4);
...@@ -237,7 +237,7 @@ TraverseTree(register WindowPtr pWin, VisitWindowProcPtr func, void * data) ...@@ -237,7 +237,7 @@ TraverseTree(register WindowPtr pWin, VisitWindowProcPtr func, void * data)
int int
WalkTree(ScreenPtr pScreen, VisitWindowProcPtr func, void * data) WalkTree(ScreenPtr pScreen, VisitWindowProcPtr func, void * data)
{ {
return(TraverseTree(WindowTable[pScreen->myNum], func, data)); return(TraverseTree(pScreen->root, func, data));
} }
/* hack for forcing backing store on all windows */ /* hack for forcing backing store on all windows */
...@@ -384,7 +384,7 @@ CreateRootWindow(ScreenPtr pScreen) ...@@ -384,7 +384,7 @@ CreateRootWindow(ScreenPtr pScreen)
savedScreenInfo[pScreen->myNum].ExternalScreenSaver = NULL; savedScreenInfo[pScreen->myNum].ExternalScreenSaver = NULL;
screenIsSaved = SCREEN_SAVER_OFF; screenIsSaved = SCREEN_SAVER_OFF;
WindowTable[pScreen->myNum] = pWin; pScreen->root = pWin;
pWin->drawable.pScreen = pScreen; pWin->drawable.pScreen = pScreen;
pWin->drawable.type = DRAWABLE_WINDOW; pWin->drawable.type = DRAWABLE_WINDOW;
...@@ -1348,7 +1348,7 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt ...@@ -1348,7 +1348,7 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt
*/ */
if ( cursorID == None) if ( cursorID == None)
{ {
if (pWin == WindowTable[pWin->drawable.pScreen->myNum]) if (pWin == pWin->drawable.pScreen->root)
pCursor = rootCursor; pCursor = rootCursor;
else else
pCursor = (CursorPtr) None; pCursor = (CursorPtr) None;
...@@ -3088,7 +3088,7 @@ HandleSaveSet(register ClientPtr client) ...@@ -3088,7 +3088,7 @@ HandleSaveSet(register ClientPtr client)
pWin = SaveSetWindow(client->saveSet[j]); pWin = SaveSetWindow(client->saveSet[j]);
#ifdef XFIXES #ifdef XFIXES
if (SaveSetToRoot(client->saveSet[j])) if (SaveSetToRoot(client->saveSet[j]))
pParent = WindowTable[pWin->drawable.pScreen->myNum]; pParent = pWin->drawable.pScreen->root;
else else
#endif #endif
{ {
...@@ -3382,9 +3382,9 @@ TileScreenSaver(int i, int kind) ...@@ -3382,9 +3382,9 @@ TileScreenSaver(int i, int kind)
attri = 0; attri = 0;
switch (kind) { switch (kind) {
case SCREEN_IS_TILED: case SCREEN_IS_TILED:
switch (WindowTable[i]->backgroundState) { switch (screenInfo.screens[i]->root->backgroundState) {
case BackgroundPixel: case BackgroundPixel:
attributes[attri++] = WindowTable[i]->background.pixel; attributes[attri++] = screenInfo.screens[i]->root->background.pixel;
mask |= CWBackPixel; mask |= CWBackPixel;
break; break;
case BackgroundPixmap: case BackgroundPixmap:
...@@ -3396,7 +3396,7 @@ TileScreenSaver(int i, int kind) ...@@ -3396,7 +3396,7 @@ TileScreenSaver(int i, int kind)
} }
break; break;
case SCREEN_IS_BLACK: case SCREEN_IS_BLACK:
attributes[attri++] = WindowTable[i]->drawable.pScreen->blackPixel; attributes[attri++] = screenInfo.screens[i]->root->drawable.pScreen->blackPixel;
mask |= CWBackPixel; mask |= CWBackPixel;
break; break;
} }
...@@ -3444,12 +3444,12 @@ TileScreenSaver(int i, int kind) ...@@ -3444,12 +3444,12 @@ TileScreenSaver(int i, int kind)
pWin = savedScreenInfo[i].pWindow = pWin = savedScreenInfo[i].pWindow =
CreateWindow(savedScreenInfo[i].wid, CreateWindow(savedScreenInfo[i].wid,
WindowTable[i], screenInfo.screens[i]->root,
-RANDOM_WIDTH, -RANDOM_WIDTH, -RANDOM_WIDTH, -RANDOM_WIDTH,
(unsigned short)screenInfo.screens[i]->width + RANDOM_WIDTH, (unsigned short)screenInfo.screens[i]->width + RANDOM_WIDTH,
(unsigned short)screenInfo.screens[i]->height + RANDOM_WIDTH, (unsigned short)screenInfo.screens[i]->height + RANDOM_WIDTH,
0, InputOutput, mask, attributes, 0, serverClient, 0, InputOutput, mask, attributes, 0, serverClient,
wVisual (WindowTable[i]), &result); wVisual (screenInfo.screens[i]->root), &result);
if (cursor) if (cursor)
FreeResource (cursorID, RT_NONE); FreeResource (cursorID, RT_NONE);
......
...@@ -583,7 +583,6 @@ extern const GCFuncs fbGCFuncs; ...@@ -583,7 +583,6 @@ extern const GCFuncs fbGCFuncs;
#ifdef FB_OLD_SCREEN #ifdef FB_OLD_SCREEN
# define FB_OLD_MISCREENINIT /* miScreenInit requires 14 args, not 13 */ # define FB_OLD_MISCREENINIT /* miScreenInit requires 14 args, not 13 */
extern WindowPtr *WindowTable;
#endif #endif
#ifdef FB_24_32BIT #ifdef FB_24_32BIT
...@@ -704,7 +703,7 @@ typedef struct { ...@@ -704,7 +703,7 @@ typedef struct {
#define fbWindowEnabled(pWin) \ #define fbWindowEnabled(pWin) \
RegionNotEmpty(\ RegionNotEmpty(\
&WindowTable[(pWin)->drawable.pScreen->myNum]->borderClip) &(pWin)->drawable.pScreen->root->borderClip)
#define fbDrawableEnabled(pDrawable) \ #define fbDrawableEnabled(pDrawable) \
((pDrawable)->type == DRAWABLE_PIXMAP ? \ ((pDrawable)->type == DRAWABLE_PIXMAP ? \
......
...@@ -262,7 +262,7 @@ fbFillRegionTiled (DrawablePtr pDrawable, ...@@ -262,7 +262,7 @@ fbFillRegionTiled (DrawablePtr pDrawable,
if(!noPanoramiXExtension) if(!noPanoramiXExtension)
{ {
int index = pDrawable->pScreen->myNum; int index = pDrawable->pScreen->myNum;
if(&WindowTable[index]->drawable == pDrawable) if(&screenInfo.screens[index]->root->drawable == pDrawable)
{ {
xRot -= panoramiXdataPtr[index].x; xRot -= panoramiXdataPtr[index].x;
yRot -= panoramiXdataPtr[index].y; yRot -= panoramiXdataPtr[index].y;
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "Xatom.h" #include "Xatom.h"
#include "selection.h" #include "selection.h"
#include "windowstr.h" #include "windowstr.h"
#include "scrnintstr.h"
#include "Windows.h" #include "Windows.h"
#include "Atoms.h" #include "Atoms.h"
...@@ -255,7 +256,7 @@ void nxagentClearSelection(XEvent *X) ...@@ -255,7 +256,7 @@ void nxagentClearSelection(XEvent *X)
NullGrab); NullGrab);
} }
CurrentSelections[i].window = WindowTable[0]->drawable.id; CurrentSelections[i].window = screenInfo.screens[0]->root->drawable.id;
CurrentSelections[i].client = NullClient; CurrentSelections[i].client = NullClient;
lastSelectionOwner[i].client = NULL; lastSelectionOwner[i].client = NULL;
...@@ -424,7 +425,7 @@ FIXME: Do we need this? ...@@ -424,7 +425,7 @@ FIXME: Do we need this?
* Fictitious window. * Fictitious window.
*/ */
x.u.selectionRequest.requestor = WindowTable[0]->drawable.id; x.u.selectionRequest.requestor = screenInfo.screens[0]->root->drawable.id;
/* /*
* Don't send the same window, some programs are * Don't send the same window, some programs are
...@@ -1502,13 +1503,13 @@ int nxagentInitClipboard(WindowPtr pWin) ...@@ -1502,13 +1503,13 @@ int nxagentInitClipboard(WindowPtr pWin)
lastSelectionOwner[nxagentPrimarySelection].selection = XA_PRIMARY; lastSelectionOwner[nxagentPrimarySelection].selection = XA_PRIMARY;
lastSelectionOwner[nxagentPrimarySelection].client = NullClient; lastSelectionOwner[nxagentPrimarySelection].client = NullClient;
lastSelectionOwner[nxagentPrimarySelection].window = WindowTable[0]->drawable.id; lastSelectionOwner[nxagentPrimarySelection].window = screenInfo.screens[0]->root->drawable.id;
lastSelectionOwner[nxagentPrimarySelection].windowPtr = NULL; lastSelectionOwner[nxagentPrimarySelection].windowPtr = NULL;
lastSelectionOwner[nxagentPrimarySelection].lastTimeChanged = GetTimeInMillis(); lastSelectionOwner[nxagentPrimarySelection].lastTimeChanged = GetTimeInMillis();
lastSelectionOwner[nxagentClipboardSelection].selection = nxagentClipboardAtom; lastSelectionOwner[nxagentClipboardSelection].selection = nxagentClipboardAtom;
lastSelectionOwner[nxagentClipboardSelection].client = NullClient; lastSelectionOwner[nxagentClipboardSelection].client = NullClient;
lastSelectionOwner[nxagentClipboardSelection].window = WindowTable[0]->drawable.id; lastSelectionOwner[nxagentClipboardSelection].window = screenInfo.screens[0]->root->drawable.id;
lastSelectionOwner[nxagentClipboardSelection].windowPtr = NULL; lastSelectionOwner[nxagentClipboardSelection].windowPtr = NULL;
lastSelectionOwner[nxagentClipboardSelection].lastTimeChanged = GetTimeInMillis(); lastSelectionOwner[nxagentClipboardSelection].lastTimeChanged = GetTimeInMillis();
......
...@@ -125,7 +125,7 @@ void nxagentRedirectDefaultWindows() ...@@ -125,7 +125,7 @@ void nxagentRedirectDefaultWindows()
for (i = 0; i < screenInfo.numScreens; i++) for (i = 0; i < screenInfo.numScreens; i++)
{ {
WindowPtr pWin = WindowTable[i]; WindowPtr pWin = screenInfo.screens[i]->root;
ScreenPtr pScreen = pWin -> drawable.pScreen; ScreenPtr pScreen = pWin -> drawable.pScreen;
......
...@@ -3292,7 +3292,7 @@ void nxagentSendDeferredBackgroundExposures(void) ...@@ -3292,7 +3292,7 @@ void nxagentSendDeferredBackgroundExposures(void)
fprintf(stderr, "nxagentSendDeferredBackgroundExposures: Going to send deferred exposures to the root window.\n"); fprintf(stderr, "nxagentSendDeferredBackgroundExposures: Going to send deferred exposures to the root window.\n");
#endif #endif
TraverseTree(WindowTable[0], nxagentClipAndSendClearExpose, (void *) nxagentDeferredBackgroundExposures); TraverseTree(screenInfo.screens[0]->root, nxagentClipAndSendClearExpose, (void *) nxagentDeferredBackgroundExposures);
RegionEmpty(nxagentDeferredBackgroundExposures); RegionEmpty(nxagentDeferredBackgroundExposures);
} }
......
...@@ -629,8 +629,8 @@ void nxagentShadowSwitchResizeMode(ScreenPtr pScreen) ...@@ -629,8 +629,8 @@ void nxagentShadowSwitchResizeMode(ScreenPtr pScreen)
{ {
nxagentShadowSetRatio(1.0, 1.0); nxagentShadowSetRatio(1.0, 1.0);
nxagentShadowCreateMainWindow(screenInfo.screens[DefaultScreen(nxagentDisplay)], WindowTable[0], nxagentShadowCreateMainWindow(screenInfo.screens[DefaultScreen(nxagentDisplay)], screenInfo.screens[0]->root,
WindowTable[0] -> drawable.width, WindowTable[0] -> drawable.height); screenInfo.screens[0]->root -> drawable.width, screenInfo.screens[0]->root -> drawable.height);
sizeHints.max_width = nxagentOption(RootWidth); sizeHints.max_width = nxagentOption(RootWidth);
sizeHints.max_height = nxagentOption(RootHeight); sizeHints.max_height = nxagentOption(RootHeight);
...@@ -640,13 +640,13 @@ void nxagentShadowSwitchResizeMode(ScreenPtr pScreen) ...@@ -640,13 +640,13 @@ void nxagentShadowSwitchResizeMode(ScreenPtr pScreen)
else else
{ {
nxagentShadowSetRatio(nxagentOption(Width) * 1.0 / nxagentShadowSetRatio(nxagentOption(Width) * 1.0 /
WindowTable[0] -> drawable.width, screenInfo.screens[0]->root -> drawable.width,
nxagentOption(Height) * 1.0 / nxagentOption(Height) * 1.0 /
WindowTable[0] -> drawable.height); screenInfo.screens[0]->root -> drawable.height);
nxagentShadowCreateMainWindow(screenInfo.screens[DefaultScreen(nxagentDisplay)], nxagentShadowCreateMainWindow(screenInfo.screens[DefaultScreen(nxagentDisplay)],
WindowTable[0], WindowTable[0] -> drawable.width, screenInfo.screens[0]->root, screenInfo.screens[0]->root -> drawable.width,
WindowTable[0] -> drawable.height); screenInfo.screens[0]->root -> drawable.height);
sizeHints.max_width = WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay)); sizeHints.max_width = WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay));
sizeHints.max_height = HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay)); sizeHints.max_height = HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay));
...@@ -963,10 +963,10 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate) ...@@ -963,10 +963,10 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
case doDebugTree: case doDebugTree:
{ {
fprintf(stderr, "\n ========== nxagentRemoteWindowsTree ==========\n"); fprintf(stderr, "\n ========== nxagentRemoteWindowsTree ==========\n");
nxagentRemoteWindowsTree(nxagentWindow(WindowTable[0]), 0); nxagentRemoteWindowsTree(nxagentWindow(screenInfo.screens[0]->root), 0);
fprintf(stderr, "\n========== nxagentInternalWindowsTree ==========\n"); fprintf(stderr, "\n========== nxagentInternalWindowsTree ==========\n");
nxagentInternalWindowsTree(WindowTable[0], 0); nxagentInternalWindowsTree(screenInfo.screens[0]->root, 0);
break; break;
} }
...@@ -1405,7 +1405,7 @@ FIXME: Don't enqueue the KeyRelease event if the key was ...@@ -1405,7 +1405,7 @@ FIXME: Don't enqueue the KeyRelease event if the key was
(X.xmotion.y_root < nxagentLastEnteredTopLevelWindow -> drawable.y + 4)) (X.xmotion.y_root < nxagentLastEnteredTopLevelWindow -> drawable.y + 4))
{ {
if (pWin && nxagentClientIsDialog(wClient(pWin)) == 0 && if (pWin && nxagentClientIsDialog(wClient(pWin)) == 0 &&
nxagentLastEnteredTopLevelWindow -> parent == WindowTable[0] && nxagentLastEnteredTopLevelWindow -> parent == screenInfo.screens[0]->root &&
nxagentLastEnteredTopLevelWindow -> overrideRedirect == False && nxagentLastEnteredTopLevelWindow -> overrideRedirect == False &&
X.xmotion.x_root > (nxagentLastEnteredTopLevelWindow -> drawable.x + X.xmotion.x_root > (nxagentLastEnteredTopLevelWindow -> drawable.x +
(nxagentLastEnteredTopLevelWindow -> drawable.width >> 1) - 50) && (nxagentLastEnteredTopLevelWindow -> drawable.width >> 1) - 50) &&
...@@ -1625,7 +1625,7 @@ FIXME: Don't enqueue the KeyRelease event if the key was ...@@ -1625,7 +1625,7 @@ FIXME: Don't enqueue the KeyRelease event if the key was
if (pWin != NULL) if (pWin != NULL)
{ {
for (pTLWin = pWin; for (pTLWin = pWin;
pTLWin -> parent != WindowTable[pTLWin -> drawable.pScreen -> myNum]; pTLWin -> parent != pTLWin -> drawable.pScreen -> root;
pTLWin = pTLWin -> parent); pTLWin = pTLWin -> parent);
} }
...@@ -2454,7 +2454,7 @@ FIXME: This can be maybe optimized by consuming the ...@@ -2454,7 +2454,7 @@ FIXME: This can be maybe optimized by consuming the
RegionValidate(&sum, &overlap); RegionValidate(&sum, &overlap);
RegionIntersect(&sum, &sum, RegionIntersect(&sum, &sum,
&WindowTable[pWin->drawable.pScreen->myNum]->winSize); &pWin->drawable.pScreen->root->winSize);
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "nxagentHandleExposeEvent: Sending events for window id [%ld].\n", fprintf(stderr, "nxagentHandleExposeEvent: Sending events for window id [%ld].\n",
...@@ -3147,7 +3147,7 @@ int nxagentCheckWindowConfiguration(XConfigureEvent* X) ...@@ -3147,7 +3147,7 @@ int nxagentCheckWindowConfiguration(XConfigureEvent* X)
fprintf(stderr, "nxagentCheckWindowConfiguration: Before restacking top level window [%p]\n", fprintf(stderr, "nxagentCheckWindowConfiguration: Before restacking top level window [%p]\n",
(void *) nxagentWindowPtr(X -> window)); (void *) nxagentWindowPtr(X -> window));
for (pSib = WindowTable[0] -> firstChild; pSib; pSib = pSib -> nextSib) for (pSib = screenInfo.screens[0]->root -> firstChild; pSib; pSib = pSib -> nextSib)
{ {
fprintf(stderr, "nxagentCheckWindowConfiguration: Top level window: [%p].\n", fprintf(stderr, "nxagentCheckWindowConfiguration: Top level window: [%p].\n",
(void *) pSib); (void *) pSib);
...@@ -3431,7 +3431,7 @@ int nxagentHandleConfigureNotify(XEvent* X) ...@@ -3431,7 +3431,7 @@ int nxagentHandleConfigureNotify(XEvent* X)
nxagentUpdateViewportFrame(0, 0, nxagentOption(RootWidth), nxagentUpdateViewportFrame(0, 0, nxagentOption(RootWidth),
nxagentOption(RootHeight)); nxagentOption(RootHeight));
XMoveWindow(nxagentDisplay, nxagentWindow(WindowTable[pScreen -> myNum]), XMoveWindow(nxagentDisplay, nxagentWindow(pScreen->root),
nxagentOption(RootX), nxagentOption(RootY)); nxagentOption(RootX), nxagentOption(RootY));
} }
...@@ -4245,7 +4245,7 @@ void nxagentForwardRemoteExpose(void) ...@@ -4245,7 +4245,7 @@ void nxagentForwardRemoteExpose(void)
fprintf(stderr, "nxagentForwardRemoteExpose: Going to forward events.\n"); fprintf(stderr, "nxagentForwardRemoteExpose: Going to forward events.\n");
#endif #endif
TraverseTree(WindowTable[0], nxagentClipAndSendExpose, (void *)nxagentRemoteExposeRegion); TraverseTree(screenInfo.screens[0]->root, nxagentClipAndSendExpose, (void *)nxagentRemoteExposeRegion);
/* /*
* Now this region should be empty. * Now this region should be empty.
...@@ -4420,7 +4420,7 @@ int nxagentHandleRRScreenChangeNotify(XEvent *X) ...@@ -4420,7 +4420,7 @@ int nxagentHandleRRScreenChangeNotify(XEvent *X)
nxagentResizeScreen(screenInfo.screens[DefaultScreen(nxagentDisplay)], Xr -> width, Xr -> height, nxagentResizeScreen(screenInfo.screens[DefaultScreen(nxagentDisplay)], Xr -> width, Xr -> height,
Xr -> mwidth, Xr -> mheight); Xr -> mwidth, Xr -> mheight);
nxagentShadowCreateMainWindow(screenInfo.screens[DefaultScreen(nxagentDisplay)], WindowTable[0], nxagentShadowCreateMainWindow(screenInfo.screens[DefaultScreen(nxagentDisplay)], screenInfo.screens[0]->root,
Xr -> width, Xr -> height); Xr -> width, Xr -> height);
nxagentShadowSetWindowsSize(); nxagentShadowSetWindowsSize();
......
...@@ -344,13 +344,13 @@ InitSelections() ...@@ -344,13 +344,13 @@ InitSelections()
CurrentSelections[0].selection = XA_PRIMARY; CurrentSelections[0].selection = XA_PRIMARY;
CurrentSelections[0].lastTimeChanged = ClientTimeToServerTime(0); CurrentSelections[0].lastTimeChanged = ClientTimeToServerTime(0);
CurrentSelections[0].window = WindowTable[0]->drawable.id; CurrentSelections[0].window = screenInfo.screens[0]->root->drawable.id;
CurrentSelections[0].pWin = NULL; CurrentSelections[0].pWin = NULL;
CurrentSelections[0].client = NullClient; CurrentSelections[0].client = NullClient;
CurrentSelections[1].selection = MakeAtom("CLIPBOARD", 9, 1); CurrentSelections[1].selection = MakeAtom("CLIPBOARD", 9, 1);
CurrentSelections[1].lastTimeChanged = ClientTimeToServerTime(0); CurrentSelections[1].lastTimeChanged = ClientTimeToServerTime(0);
CurrentSelections[1].window = WindowTable[0]->drawable.id; CurrentSelections[1].window = screenInfo.screens[0]->root->drawable.id;
CurrentSelections[1].pWin = NULL; CurrentSelections[1].pWin = NULL;
CurrentSelections[1].client = NullClient; CurrentSelections[1].client = NullClient;
} }
...@@ -374,8 +374,8 @@ FlushClientCaches(XID id) ...@@ -374,8 +374,8 @@ FlushClientCaches(XID id)
{ {
if (client->lastDrawableID == id) if (client->lastDrawableID == id)
{ {
client->lastDrawableID = WindowTable[0]->drawable.id; client->lastDrawableID = screenInfo.screens[0]->root->drawable.id;
client->lastDrawable = (DrawablePtr)WindowTable[0]; client->lastDrawable = (DrawablePtr)screenInfo.screens[0]->root;
} }
else if (client->lastGCID == id) else if (client->lastGCID == id)
{ {
...@@ -1161,7 +1161,7 @@ GetGeometry(register ClientPtr client, xGetGeometryReply *rep) ...@@ -1161,7 +1161,7 @@ GetGeometry(register ClientPtr client, xGetGeometryReply *rep)
rep->type = X_Reply; rep->type = X_Reply;
rep->length = 0; rep->length = 0;
rep->sequenceNumber = client->sequence; rep->sequenceNumber = client->sequence;
rep->root = WindowTable[pDraw->pScreen->myNum]->drawable.id; rep->root = pDraw->pScreen->root->drawable.id;
rep->depth = pDraw->depth; rep->depth = pDraw->depth;
rep->width = pDraw->width; rep->width = pDraw->width;
rep->height = pDraw->height; rep->height = pDraw->height;
...@@ -1221,7 +1221,7 @@ ProcQueryTree(register ClientPtr client) ...@@ -1221,7 +1221,7 @@ ProcQueryTree(register ClientPtr client)
return(BadWindow); return(BadWindow);
memset(&reply, 0, sizeof(xQueryTreeReply)); memset(&reply, 0, sizeof(xQueryTreeReply));
reply.type = X_Reply; reply.type = X_Reply;
reply.root = WindowTable[pWin->drawable.pScreen->myNum]->drawable.id; reply.root = pWin->drawable.pScreen->root->drawable.id;
reply.sequenceNumber = client->sequence; reply.sequenceNumber = client->sequence;
if (pWin->parent) if (pWin->parent)
reply.parent = pWin->parent->drawable.id; reply.parent = pWin->parent->drawable.id;
...@@ -4319,8 +4319,8 @@ void InitClient(ClientPtr client, int i, void * ospriv) ...@@ -4319,8 +4319,8 @@ void InitClient(ClientPtr client, int i, void * ospriv)
if (i) if (i)
{ {
client->closeDownMode = DestroyAll; client->closeDownMode = DestroyAll;
client->lastDrawable = (DrawablePtr)WindowTable[0]; client->lastDrawable = (DrawablePtr)screenInfo.screens[0]->root;
client->lastDrawableID = WindowTable[0]->drawable.id; client->lastDrawableID = screenInfo.screens[0]->root->drawable.id;
} }
else else
{ {
...@@ -4563,8 +4563,8 @@ SendConnSetup(register ClientPtr client, char *reason) ...@@ -4563,8 +4563,8 @@ SendConnSetup(register ClientPtr client, char *reason)
register unsigned int j; register unsigned int j;
register xDepth *pDepth; register xDepth *pDepth;
root->currentInputMask = WindowTable[i]->eventMask | root->currentInputMask = screenInfo.screens[i]->root->eventMask |
wOtherEventMasks (WindowTable[i]); wOtherEventMasks (screenInfo.screens[i]->root);
pDepth = (xDepth *)(root + 1); pDepth = (xDepth *)(root + 1);
for (j = 0; j < root->nDepths; j++) for (j = 0; j < root->nDepths; j++)
{ {
......
...@@ -162,7 +162,6 @@ extern Bool XkbFilterEvents(ClientPtr, int, xEvent *); ...@@ -162,7 +162,6 @@ extern Bool XkbFilterEvents(ClientPtr, int, xEvent *);
#endif #endif
#ifdef XEVIE #ifdef XEVIE
extern WindowPtr *WindowTable;
extern int xevieFlag; extern int xevieFlag;
extern int xevieClientIndex; extern int xevieClientIndex;
extern DeviceIntPtr xeviemouse; extern DeviceIntPtr xeviemouse;
...@@ -465,9 +464,10 @@ XineramaCheckPhysLimits( ...@@ -465,9 +464,10 @@ XineramaCheckPhysLimits(
static Bool static Bool
XineramaSetWindowPntrs(WindowPtr pWin) XineramaSetWindowPntrs(WindowPtr pWin)
{ {
if(pWin == WindowTable[0]) { if(pWin == screenInfo.screens[0]->root) {
memcpy(sprite.windows, WindowTable, int i;
PanoramiXNumScreens*sizeof(WindowPtr)); for (i = 0; i < PanoramiXNumScreens; i++)
sprite.windows[i] = screenInfo.screens[i]->root;
} else { } else {
PanoramiXRes *win; PanoramiXRes *win;
int i; int i;
...@@ -692,7 +692,7 @@ XineramaConfineCursorToWindow(WindowPtr pWin, Bool generateEvents) ...@@ -692,7 +692,7 @@ XineramaConfineCursorToWindow(WindowPtr pWin, Bool generateEvents)
sprite.hotShape = NullRegion; sprite.hotShape = NullRegion;
sprite.confined = FALSE; sprite.confined = FALSE;
sprite.confineWin = (pWin == WindowTable[0]) ? NullWindow : pWin; sprite.confineWin = (pWin == screenInfo.screens[0]->root) ? NullWindow : pWin;
XineramaCheckPhysLimits(sprite.current, generateEvents); XineramaCheckPhysLimits(sprite.current, generateEvents);
} }
...@@ -909,7 +909,7 @@ CheckVirtualMotion( ...@@ -909,7 +909,7 @@ CheckVirtualMotion(
qe->event->u.keyButtonPointer.rootY = sprite.hot.y; qe->event->u.keyButtonPointer.rootY = sprite.hot.y;
} }
} }
ROOT = WindowTable[sprite.hot.pScreen->myNum]; ROOT = sprite.hot.pScreen->root;
} }
static void static void
...@@ -1109,7 +1109,7 @@ EnqueueEvent(xEvent *xE, DeviceIntPtr device, int count) ...@@ -1109,7 +1109,7 @@ EnqueueEvent(xEvent *xE, DeviceIntPtr device, int count)
*/ */
if (xE->u.u.type == MotionNotify) if (xE->u.u.type == MotionNotify)
XE_KBPTR.root = XE_KBPTR.root =
WindowTable[sprite.hotPhys.pScreen->myNum]->drawable.id; sprite.hotPhys.pScreen->root->drawable.id;
eventinfo.events = xE; eventinfo.events = xE;
eventinfo.count = count; eventinfo.count = count;
CallCallbacks(&DeviceEventCallback, (void *)&eventinfo); CallCallbacks(&DeviceEventCallback, (void *)&eventinfo);
...@@ -1272,7 +1272,7 @@ playmore: ...@@ -1272,7 +1272,7 @@ playmore:
ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); ConfineCursorToWindow(grab->confineTo, TRUE, TRUE);
} }
else else
ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], ConfineCursorToWindow(sprite.hotPhys.pScreen->root,
TRUE, FALSE); TRUE, FALSE);
PostNewCursor(); PostNewCursor();
} }
...@@ -1290,7 +1290,7 @@ ScreenRestructured (ScreenPtr pScreen) ...@@ -1290,7 +1290,7 @@ ScreenRestructured (ScreenPtr pScreen)
ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); ConfineCursorToWindow(grab->confineTo, TRUE, TRUE);
} }
else else
ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], ConfineCursorToWindow(sprite.hotPhys.pScreen->root,
TRUE, FALSE); TRUE, FALSE);
} }
#endif #endif
...@@ -2219,7 +2219,7 @@ CheckMotion(xEvent *xE) ...@@ -2219,7 +2219,7 @@ CheckMotion(xEvent *xE)
if (sprite.hot.pScreen != sprite.hotPhys.pScreen) if (sprite.hot.pScreen != sprite.hotPhys.pScreen)
{ {
sprite.hot.pScreen = sprite.hotPhys.pScreen; sprite.hot.pScreen = sprite.hotPhys.pScreen;
ROOT = WindowTable[sprite.hot.pScreen->myNum]; ROOT = sprite.hot.pScreen->root;
} }
#ifdef XEVIE #ifdef XEVIE
xeviehot.x = xeviehot.x =
...@@ -2307,9 +2307,9 @@ WindowsRestructured() ...@@ -2307,9 +2307,9 @@ WindowsRestructured()
#ifdef PANORAMIX #ifdef PANORAMIX
/* This was added to support reconfiguration under Xdmx. The problem is /* 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 * that if the 0th screen (i.e., screenInfo.screens[0]->root) is moved to
* other than 0,0, the information in the private sprite structure must * an origin other than 0,0, the information in the private sprite structure
* be updated accordingly, or XYToWindow (and other routines) will not * must be updated accordingly, or XYToWindow (and other routines) will not
* compute correctly. */ * compute correctly. */
void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff) void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff)
{ {
...@@ -2339,7 +2339,7 @@ void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff) ...@@ -2339,7 +2339,7 @@ void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff)
sprite.hotPhys.x = sprite.hotPhys.y = 0; sprite.hotPhys.x = sprite.hotPhys.y = 0;
ConfineCursorToWindow(grab->confineTo, TRUE, TRUE); ConfineCursorToWindow(grab->confineTo, TRUE, TRUE);
} else } else
ConfineCursorToWindow(WindowTable[sprite.hotPhys.pScreen->myNum], ConfineCursorToWindow(sprite.hotPhys.pScreen->root,
TRUE, FALSE); TRUE, FALSE);
} }
#endif #endif
...@@ -2435,7 +2435,7 @@ NewCurrentScreen(ScreenPtr newScreen, int x, int y) ...@@ -2435,7 +2435,7 @@ NewCurrentScreen(ScreenPtr newScreen, int x, int y)
if(sprite.confineWin) if(sprite.confineWin)
XineramaConfineCursorToWindow(sprite.confineWin, TRUE); XineramaConfineCursorToWindow(sprite.confineWin, TRUE);
else else
XineramaConfineCursorToWindow(WindowTable[0], TRUE); XineramaConfineCursorToWindow(screenInfo.screens[0]->root, TRUE);
/* if the pointer wasn't confined, the DDX won't get /* if the pointer wasn't confined, the DDX won't get
told of the pointer warp so we reposition it here */ told of the pointer warp so we reposition it here */
if(!syncEvents.playingEvents) if(!syncEvents.playingEvents)
...@@ -2448,7 +2448,7 @@ NewCurrentScreen(ScreenPtr newScreen, int x, int y) ...@@ -2448,7 +2448,7 @@ NewCurrentScreen(ScreenPtr newScreen, int x, int y)
} else } else
#endif #endif
if (newScreen != sprite.hotPhys.pScreen) if (newScreen != sprite.hotPhys.pScreen)
ConfineCursorToWindow(WindowTable[newScreen->myNum], TRUE, FALSE); ConfineCursorToWindow(newScreen->root, TRUE, FALSE);
} }
#ifdef PANORAMIX #ifdef PANORAMIX
...@@ -2520,7 +2520,7 @@ XineramaWarpPointer(ClientPtr client) ...@@ -2520,7 +2520,7 @@ XineramaWarpPointer(ClientPtr client)
winX = source->drawable.x; winX = source->drawable.x;
winY = source->drawable.y; winY = source->drawable.y;
if(source == WindowTable[0]) { if(source == screenInfo.screens[0]->root) {
winX -= panoramiXdataPtr[0].x; winX -= panoramiXdataPtr[0].x;
winY -= panoramiXdataPtr[0].y; winY -= panoramiXdataPtr[0].y;
} }
...@@ -2536,7 +2536,7 @@ XineramaWarpPointer(ClientPtr client) ...@@ -2536,7 +2536,7 @@ XineramaWarpPointer(ClientPtr client)
if (dest) { if (dest) {
x = dest->drawable.x; x = dest->drawable.x;
y = dest->drawable.y; y = dest->drawable.y;
if(dest == WindowTable[0]) { if(dest == screenInfo.screens[0]->root) {
x -= panoramiXdataPtr[0].x; x -= panoramiXdataPtr[0].x;
y -= panoramiXdataPtr[0].y; y -= panoramiXdataPtr[0].y;
} }
...@@ -3206,7 +3206,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count ...@@ -3206,7 +3206,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
/* see comment in EnqueueEvents regarding the next three lines */ /* see comment in EnqueueEvents regarding the next three lines */
if (xE->u.u.type == MotionNotify) if (xE->u.u.type == MotionNotify)
XE_KBPTR.root = XE_KBPTR.root =
WindowTable[sprite.hotPhys.pScreen->myNum]->drawable.id; sprite.hotPhys.pScreen->root->drawable.id;
eventinfo.events = xE; eventinfo.events = xE;
eventinfo.count = count; eventinfo.count = count;
CallCallbacks(&DeviceEventCallback, (void *)&eventinfo); CallCallbacks(&DeviceEventCallback, (void *)&eventinfo);
...@@ -3818,11 +3818,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode) ...@@ -3818,11 +3818,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode)
/* Notify all the roots */ /* Notify all the roots */
#ifdef PANORAMIX #ifdef PANORAMIX
if ( !noPanoramiXExtension ) if ( !noPanoramiXExtension )
FocusEvent(dev, FocusOut, mode, out, WindowTable[0]); FocusEvent(dev, FocusOut, mode, out, screenInfo.screens[0]->root);
else else
#endif #endif
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
FocusEvent(dev, FocusOut, mode, out, WindowTable[i]); FocusEvent(dev, FocusOut, mode, out, screenInfo.screens[i]->root);
} }
else else
{ {
...@@ -3837,11 +3837,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode) ...@@ -3837,11 +3837,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode)
/* Notify all the roots */ /* Notify all the roots */
#ifdef PANORAMIX #ifdef PANORAMIX
if ( !noPanoramiXExtension ) if ( !noPanoramiXExtension )
FocusEvent(dev, FocusIn, mode, in, WindowTable[0]); FocusEvent(dev, FocusIn, mode, in, screenInfo.screens[0]->root);
else else
#endif #endif
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
FocusEvent(dev, FocusIn, mode, in, WindowTable[i]); FocusEvent(dev, FocusIn, mode, in, screenInfo.screens[i]->root);
if (toWin == PointerRootWin) if (toWin == PointerRootWin)
(void)FocusInEvents(dev, ROOT, sprite.win, NullWindow, mode, (void)FocusInEvents(dev, ROOT, sprite.win, NullWindow, mode,
NotifyPointer, TRUE); NotifyPointer, TRUE);
...@@ -3855,11 +3855,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode) ...@@ -3855,11 +3855,11 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode)
TRUE); TRUE);
#ifdef PANORAMIX #ifdef PANORAMIX
if ( !noPanoramiXExtension ) if ( !noPanoramiXExtension )
FocusEvent(dev, FocusOut, mode, out, WindowTable[0]); FocusEvent(dev, FocusOut, mode, out, screenInfo.screens[0]->root);
else else
#endif #endif
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
FocusEvent(dev, FocusOut, mode, out, WindowTable[i]); FocusEvent(dev, FocusOut, mode, out, screenInfo.screens[i]->root);
if (toWin->parent != NullWindow) if (toWin->parent != NullWindow)
(void)FocusInEvents(dev, ROOT, toWin, toWin, mode, (void)FocusInEvents(dev, ROOT, toWin, toWin, mode,
NotifyNonlinearVirtual, TRUE); NotifyNonlinearVirtual, TRUE);
......
...@@ -504,7 +504,7 @@ miSendExposures(pWin, pRgn, dx, dy) ...@@ -504,7 +504,7 @@ miSendExposures(pWin, pRgn, dx, dy)
if(!pWin->parent) { if(!pWin->parent) {
x = panoramiXdataPtr[scrnum].x; x = panoramiXdataPtr[scrnum].x;
y = panoramiXdataPtr[scrnum].y; y = panoramiXdataPtr[scrnum].y;
pWin = WindowTable[0]; pWin = screenInfo.screens[0]->root;
realWin = pWin->drawable.id; realWin = pWin->drawable.id;
} else if (scrnum) { } else if (scrnum) {
PanoramiXRes *win; PanoramiXRes *win;
...@@ -788,7 +788,7 @@ int what; ...@@ -788,7 +788,7 @@ int what;
gcmask |= GCFunction | GCClipMask; gcmask |= GCFunction | GCClipMask;
i = pScreen->myNum; i = pScreen->myNum;
pRoot = WindowTable[i]; pRoot = screenInfo.screens[i]->root;
pBgWin = pWin; pBgWin = pWin;
if (what == PW_BORDER) if (what == PW_BORDER)
......
...@@ -3204,7 +3204,7 @@ PanoramiXRenderCreatePicture (ClientPtr client) ...@@ -3204,7 +3204,7 @@ PanoramiXRenderCreatePicture (ClientPtr client)
newPict->info[0].id = stuff->pid; newPict->info[0].id = stuff->pid;
if (refDraw->type == XRT_WINDOW && if (refDraw->type == XRT_WINDOW &&
stuff->drawable == WindowTable[0]->drawable.id) stuff->drawable == screenInfo.screens[0]->root->drawable.id)
{ {
newPict->u.pict.root = TRUE; newPict->u.pict.root = TRUE;
} }
......
...@@ -699,8 +699,8 @@ FreeResource(XID id, RESTYPE skipDeleteFuncType) ...@@ -699,8 +699,8 @@ FreeResource(XID id, RESTYPE skipDeleteFuncType)
} }
if(clients[cid] && (id == clients[cid]->lastDrawableID)) if(clients[cid] && (id == clients[cid]->lastDrawableID))
{ {
clients[cid]->lastDrawable = (DrawablePtr)WindowTable[0]; clients[cid]->lastDrawable = (DrawablePtr)screenInfo.screens[0]->root;
clients[cid]->lastDrawableID = WindowTable[0]->drawable.id; clients[cid]->lastDrawableID = screenInfo.screens[0]->root->drawable.id;
} }
} }
if (!gotOne) if (!gotOne)
...@@ -740,8 +740,8 @@ FreeResourceByType(XID id, RESTYPE type, Bool skipFree) ...@@ -740,8 +740,8 @@ FreeResourceByType(XID id, RESTYPE type, Bool skipFree)
} }
if(clients[cid] && (id == clients[cid]->lastDrawableID)) if(clients[cid] && (id == clients[cid]->lastDrawableID))
{ {
clients[cid]->lastDrawable = (DrawablePtr)WindowTable[0]; clients[cid]->lastDrawable = (DrawablePtr)screenInfo.screens[0]->root;
clients[cid]->lastDrawableID = WindowTable[0]->drawable.id; clients[cid]->lastDrawableID = screenInfo.screens[0]->root->drawable.id;
} }
} }
} }
......
...@@ -240,7 +240,7 @@ PrintWindowTree() ...@@ -240,7 +240,7 @@ PrintWindowTree()
for (i=0; i<screenInfo.numScreens; i++) for (i=0; i<screenInfo.numScreens; i++)
{ {
ErrorF( "WINDOW %d\n", i); ErrorF( "WINDOW %d\n", i);
pWin = WindowTable[i]; pWin = screenInfo.screens[i]->root;
RegionPrint(&pWin->clipList); RegionPrint(&pWin->clipList);
p1 = pWin->firstChild; p1 = pWin->firstChild;
PrintChildren(p1, 4); PrintChildren(p1, 4);
...@@ -286,7 +286,7 @@ TraverseTree(register WindowPtr pWin, VisitWindowProcPtr func, void * data) ...@@ -286,7 +286,7 @@ TraverseTree(register WindowPtr pWin, VisitWindowProcPtr func, void * data)
int int
WalkTree(ScreenPtr pScreen, VisitWindowProcPtr func, void * data) WalkTree(ScreenPtr pScreen, VisitWindowProcPtr func, void * data)
{ {
return(TraverseTree(WindowTable[pScreen->myNum], func, data)); return(TraverseTree(pScreen->root, func, data));
} }
/* hack for forcing backing store on all windows */ /* hack for forcing backing store on all windows */
...@@ -457,7 +457,9 @@ CreateRootWindow(ScreenPtr pScreen) ...@@ -457,7 +457,9 @@ CreateRootWindow(ScreenPtr pScreen)
savedScreenInfo[pScreen->myNum].ExternalScreenSaver = NULL; savedScreenInfo[pScreen->myNum].ExternalScreenSaver = NULL;
screenIsSaved = SCREEN_SAVER_OFF; screenIsSaved = SCREEN_SAVER_OFF;
WindowTable[pScreen->myNum] = pWin; pScreen->root = pWin;
pScreen->root = pWin;
pWin->drawable.pScreen = pScreen; pWin->drawable.pScreen = pScreen;
pWin->drawable.type = DRAWABLE_WINDOW; pWin->drawable.type = DRAWABLE_WINDOW;
...@@ -583,11 +585,11 @@ InitRootWindow(WindowPtr pWin) ...@@ -583,11 +585,11 @@ InitRootWindow(WindowPtr pWin)
/* /*
* A root window is created for each screen by main * A root window is created for each screen by main
* and the pointer is saved in WindowTable as in the * and the pointer is saved in screenInfo.screens as
* following snippet: * in the following snippet:
* *
* for (i = 0; i < screenInfo.numScreens; i++) * for (i = 0; i < screenInfo.numScreens; i++)
* InitRootWindow(WindowTable[i]); * InitRootWindow(screenInfo.screens[i]->root);
* *
* Our root window on the real display was already * Our root window on the real display was already
* created at the time the screen was opened, so it * created at the time the screen was opened, so it
...@@ -1583,7 +1585,7 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt ...@@ -1583,7 +1585,7 @@ ChangeWindowAttributes(register WindowPtr pWin, Mask vmask, XID *vlist, ClientPt
*/ */
if ( cursorID == None) if ( cursorID == None)
{ {
if (pWin == WindowTable[pWin->drawable.pScreen->myNum]) if (pWin == pWin->drawable.pScreen->root)
pCursor = rootCursor; pCursor = rootCursor;
else else
pCursor = (CursorPtr) None; pCursor = (CursorPtr) None;
...@@ -2863,7 +2865,7 @@ ReparentWindow(register WindowPtr pWin, register WindowPtr pParent, ...@@ -2863,7 +2865,7 @@ ReparentWindow(register WindowPtr pWin, register WindowPtr pParent,
pWin->parent = pParent; pWin->parent = pParent;
pPrev = RealChildHead(pParent); pPrev = RealChildHead(pParent);
if (pWin->parent == WindowTable[0]) if (pWin->parent == screenInfo.screens[0]->root)
{ {
nxagentSetTopLevelEventMask(pWin); nxagentSetTopLevelEventMask(pWin);
} }
...@@ -3442,7 +3444,7 @@ HandleSaveSet(register ClientPtr client) ...@@ -3442,7 +3444,7 @@ HandleSaveSet(register ClientPtr client)
pWin = SaveSetWindow(client->saveSet[j]); pWin = SaveSetWindow(client->saveSet[j]);
#ifdef XFIXES #ifdef XFIXES
if (SaveSetToRoot(client->saveSet[j])) if (SaveSetToRoot(client->saveSet[j]))
pParent = WindowTable[pWin->drawable.pScreen->myNum]; pParent = pWin->drawable.pScreen->root;
else else
#endif #endif
{ {
...@@ -3744,9 +3746,9 @@ TileScreenSaver(int i, int kind) ...@@ -3744,9 +3746,9 @@ TileScreenSaver(int i, int kind)
attri = 0; attri = 0;
switch (kind) { switch (kind) {
case SCREEN_IS_TILED: case SCREEN_IS_TILED:
switch (WindowTable[i]->backgroundState) { switch (screenInfo.screens[i]->root->backgroundState) {
case BackgroundPixel: case BackgroundPixel:
attributes[attri++] = WindowTable[i]->background.pixel; attributes[attri++] = screenInfo.screens[i]->root->background.pixel;
mask |= CWBackPixel; mask |= CWBackPixel;
break; break;
case BackgroundPixmap: case BackgroundPixmap:
...@@ -3758,7 +3760,7 @@ TileScreenSaver(int i, int kind) ...@@ -3758,7 +3760,7 @@ TileScreenSaver(int i, int kind)
} }
break; break;
case SCREEN_IS_BLACK: case SCREEN_IS_BLACK:
attributes[attri++] = WindowTable[i]->drawable.pScreen->blackPixel; attributes[attri++] = screenInfo.screens[i]->root->drawable.pScreen->blackPixel;
mask |= CWBackPixel; mask |= CWBackPixel;
break; break;
} }
...@@ -3806,12 +3808,12 @@ TileScreenSaver(int i, int kind) ...@@ -3806,12 +3808,12 @@ TileScreenSaver(int i, int kind)
pWin = savedScreenInfo[i].pWindow = pWin = savedScreenInfo[i].pWindow =
CreateWindow(savedScreenInfo[i].wid, CreateWindow(savedScreenInfo[i].wid,
WindowTable[i], screenInfo.screens[i]->root,
-RANDOM_WIDTH, -RANDOM_WIDTH, -RANDOM_WIDTH, -RANDOM_WIDTH,
(unsigned short)screenInfo.screens[i]->width + RANDOM_WIDTH, (unsigned short)screenInfo.screens[i]->width + RANDOM_WIDTH,
(unsigned short)screenInfo.screens[i]->height + RANDOM_WIDTH, (unsigned short)screenInfo.screens[i]->height + RANDOM_WIDTH,
0, InputOutput, mask, attributes, 0, serverClient, 0, InputOutput, mask, attributes, 0, serverClient,
wVisual (WindowTable[i]), &result); wVisual (screenInfo.screens[i]->root), &result);
if (cursor) if (cursor)
FreeResource (cursorID, RT_NONE); FreeResource (cursorID, RT_NONE);
......
...@@ -1449,7 +1449,7 @@ Bool nxagentFbOnShadowDisplay() ...@@ -1449,7 +1449,7 @@ Bool nxagentFbOnShadowDisplay()
XGCValues value; XGCValues value;
XImage *image; XImage *image;
Visual *pVisual; Visual *pVisual;
WindowPtr pWin = WindowTable[0]; WindowPtr pWin = screenInfo.screens[0]->root;
unsigned int format; unsigned int format;
int depth, width, height, length; int depth, width, height, length;
char *data = NULL; char *data = NULL;
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "../../include/window.h" #include "../../include/window.h"
#include "windowstr.h" #include "windowstr.h"
#include "colormapst.h" #include "colormapst.h"
#include "scrnintstr.h"
#include "propertyst.h" #include "propertyst.h"
#include "Agent.h" #include "Agent.h"
...@@ -242,7 +243,7 @@ Bool nxagentRootlessTreesMatch() ...@@ -242,7 +243,7 @@ Bool nxagentRootlessTreesMatch()
Window *children_return; Window *children_return;
unsigned int nChildrenReturn; unsigned int nChildrenReturn;
WindowPtr pW; WindowPtr pW;
WindowPtr pTestWin = WindowTable[0] -> firstChild; WindowPtr pTestWin = screenInfo.screens[0]->root -> firstChild;
Bool treesMatch = True; Bool treesMatch = True;
Status result; Status result;
...@@ -267,7 +268,7 @@ Bool nxagentRootlessTreesMatch() ...@@ -267,7 +268,7 @@ Bool nxagentRootlessTreesMatch()
pW = nxagentRootlessTopLevelWindow(children_return[nChildrenReturn]); pW = nxagentRootlessTopLevelWindow(children_return[nChildrenReturn]);
} }
if (pW && pW != WindowTable[0]) if (pW && pW != screenInfo.screens[0]->root)
{ {
if (treesMatch && pTestWin && pTestWin == pW) if (treesMatch && pTestWin && pTestWin == pW)
{ {
...@@ -316,7 +317,7 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren) ...@@ -316,7 +317,7 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren)
pWin = nxagentRootlessTopLevelWindow(children[i]); pWin = nxagentRootlessTopLevelWindow(children[i]);
} }
if (pWin && pWin != WindowTable[0]) if (pWin && pWin != screenInfo.screens[0]->root)
{ {
toplevel[ntoplevel++] = pWin; toplevel[ntoplevel++] = pWin;
} }
...@@ -338,14 +339,14 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren) ...@@ -338,14 +339,14 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren)
fprintf(stderr, "nxagentRootlessRestack: Internal top level windows before restack:"); fprintf(stderr, "nxagentRootlessRestack: Internal top level windows before restack:");
for (pWin = WindowTable[0] -> firstChild; pWin != NULL; pWin = pWin -> nextSib) for (pWin = screenInfo.screens[0]->root -> firstChild; pWin != NULL; pWin = pWin -> nextSib)
{ {
fprintf(stderr, "[%p]\n", pWin); fprintf(stderr, "[%p]\n", pWin);
} }
#endif #endif
pWin = WindowTable[0] -> firstChild; pWin = screenInfo.screens[0]->root -> firstChild;
values[1] = (XID) Above; values[1] = (XID) Above;
...@@ -381,7 +382,7 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren) ...@@ -381,7 +382,7 @@ void nxagentRootlessRestack(unsigned long children[], unsigned int nchildren)
fprintf(stderr, "nxagentRootlessRestack: Internal top level windows after restack:"); fprintf(stderr, "nxagentRootlessRestack: Internal top level windows after restack:");
for (pWin = WindowTable[0] -> firstChild; pWin != NULL; pWin = pWin -> nextSib) for (pWin = screenInfo.screens[0]->root -> firstChild; pWin != NULL; pWin = pWin -> nextSib)
{ {
fprintf(stderr, "[%p]\n", pWin); fprintf(stderr, "[%p]\n", pWin);
} }
......
...@@ -2116,7 +2116,7 @@ Bool nxagentCloseScreen(int index, ScreenPtr pScreen) ...@@ -2116,7 +2116,7 @@ Bool nxagentCloseScreen(int index, ScreenPtr pScreen)
static void nxagentSetRootClip (ScreenPtr pScreen, Bool enable) static void nxagentSetRootClip (ScreenPtr pScreen, Bool enable)
{ {
WindowPtr pWin = WindowTable[pScreen->myNum]; WindowPtr pWin = pScreen->root;
WindowPtr pChild; WindowPtr pChild;
Bool WasViewable = (Bool)(pWin->viewable); Bool WasViewable = (Bool)(pWin->viewable);
Bool anyMarked = FALSE; Bool anyMarked = FALSE;
...@@ -2409,21 +2409,21 @@ FIXME: We should try to restore the previously ...@@ -2409,21 +2409,21 @@ FIXME: We should try to restore the previously
box.x2 = width; box.x2 = width;
box.y2 = height; box.y2 = height;
WindowTable[pScreen -> myNum] -> drawable.width = width; pScreen->root -> drawable.width = width;
WindowTable[pScreen -> myNum] -> drawable.height = height; pScreen->root -> drawable.height = height;
WindowTable[pScreen -> myNum] -> drawable.x = 0; pScreen->root -> drawable.x = 0;
WindowTable[pScreen -> myNum] -> drawable.y = 0; pScreen->root -> drawable.y = 0;
RegionInit(&WindowTable[pScreen -> myNum] -> borderSize, &box, 1); RegionInit(&pScreen->root -> borderSize, &box, 1);
RegionInit(&WindowTable[pScreen -> myNum] -> winSize, &box, 1); RegionInit(&pScreen->root -> winSize, &box, 1);
RegionInit(&WindowTable[pScreen -> myNum] -> clipList, &box, 1); RegionInit(&pScreen->root -> clipList, &box, 1);
RegionInit(&WindowTable[pScreen -> myNum] -> borderClip, &box, 1); RegionInit(&pScreen->root -> borderClip, &box, 1);
(*pScreen -> PositionWindow)(WindowTable[pScreen -> myNum], 0, 0); (*pScreen -> PositionWindow)(pScreen->root, 0, 0);
nxagentSetRootClip(pScreen, 1); nxagentSetRootClip(pScreen, 1);
XMoveWindow(nxagentDisplay, nxagentWindow(WindowTable[0]), XMoveWindow(nxagentDisplay, nxagentWindow(screenInfo.screens[0]->root),
nxagentOption(RootX), nxagentOption(RootY)); nxagentOption(RootX), nxagentOption(RootY));
nxagentMoveViewport(pScreen, 0, 0); nxagentMoveViewport(pScreen, 0, 0);
...@@ -3522,7 +3522,7 @@ FIXME: The port information is not used at the moment and produces a ...@@ -3522,7 +3522,7 @@ FIXME: The port information is not used at the moment and produces a
{ {
mcop_local_atom = MakeAtom(mcop_atom, strlen(mcop_atom), 1); mcop_local_atom = MakeAtom(mcop_atom, strlen(mcop_atom), 1);
ChangeWindowProperty(WindowTable[pScreen->myNum], ChangeWindowProperty(pScreen->root,
mcop_local_atom, mcop_local_atom,
XA_STRING, XA_STRING,
iReturnFormat, PropModeReplace, iReturnFormat, PropModeReplace,
...@@ -3667,9 +3667,9 @@ int nxagentChangeScreenConfig(int screen, int width, int height, int mmWidth, in ...@@ -3667,9 +3667,9 @@ int nxagentChangeScreenConfig(int screen, int width, int height, int mmWidth, in
int r; int r;
#ifdef TEST #ifdef TEST
fprintf(stderr, "nxagentChangeScreenConfig: WindowTable[%d] is %p\n", screen, WindowTable[screen]); fprintf(stderr, "nxagentChangeScreenConfig: screenInfo.screens[%d]->root is %p\n", screen, screenInfo.screens[screen]);
#endif #endif
if (WindowTable[screen] == NULL) if (screenInfo.screens[screen]->root == NULL)
{ {
return 0; return 0;
} }
...@@ -3692,7 +3692,7 @@ int nxagentChangeScreenConfig(int screen, int width, int height, int mmWidth, in ...@@ -3692,7 +3692,7 @@ int nxagentChangeScreenConfig(int screen, int width, int height, int mmWidth, in
return 0; return 0;
} }
pScreen = WindowTable[screen] -> drawable.pScreen; pScreen = screenInfo.screens[screen] -> root -> drawable.pScreen;
#ifdef TEST #ifdef TEST
fprintf(stderr, "nxagentChangeScreenConfig: Changing config to %dx%d.\n", width, height); fprintf(stderr, "nxagentChangeScreenConfig: Changing config to %dx%d.\n", width, height);
...@@ -4124,7 +4124,7 @@ void nxagentSaveAreas(PixmapPtr pPixmap, RegionPtr prgnSave, int xorg, int yorg, ...@@ -4124,7 +4124,7 @@ void nxagentSaveAreas(PixmapPtr pPixmap, RegionPtr prgnSave, int xorg, int yorg,
values.subwindow_mode = IncludeInferiors; values.subwindow_mode = IncludeInferiors;
gc = XCreateGC(nxagentDisplay, nxagentWindow(WindowTable[0]), GCSubwindowMode, &values); gc = XCreateGC(nxagentDisplay, nxagentWindow(screenInfo.screens[0]->root), GCSubwindowMode, &values);
/* /*
* Initialize to the corrupted region. * Initialize to the corrupted region.
...@@ -4234,7 +4234,7 @@ void nxagentRestoreAreas(PixmapPtr pPixmap, RegionPtr prgnRestore, int xorg, ...@@ -4234,7 +4234,7 @@ void nxagentRestoreAreas(PixmapPtr pPixmap, RegionPtr prgnRestore, int xorg,
*/ */
RegionIntersect(prgnRestore, prgnRestore, RegionIntersect(prgnRestore, prgnRestore,
&WindowTable[pWin -> drawable.pScreen -> myNum] -> winSize); &pWin -> drawable.pScreen -> root -> winSize);
pBackingStore = (miBSWindowPtr) pWin -> backStorage; pBackingStore = (miBSWindowPtr) pWin -> backStorage;
...@@ -4245,7 +4245,7 @@ void nxagentRestoreAreas(PixmapPtr pPixmap, RegionPtr prgnRestore, int xorg, ...@@ -4245,7 +4245,7 @@ void nxagentRestoreAreas(PixmapPtr pPixmap, RegionPtr prgnRestore, int xorg,
values.subwindow_mode = ClipByChildren; values.subwindow_mode = ClipByChildren;
gc = XCreateGC(nxagentDisplay, nxagentWindow(WindowTable[0]), GCSubwindowMode, &values); gc = XCreateGC(nxagentDisplay, nxagentWindow(screenInfo.screens[0]->root), GCSubwindowMode, &values);
/* /*
* Translate the reference point to the origin of the window. * Translate the reference point to the origin of the window.
...@@ -4406,7 +4406,7 @@ void nxagentShadowAdaptToRatio(void) ...@@ -4406,7 +4406,7 @@ void nxagentShadowAdaptToRatio(void)
nxagentShadowSetRatio(nxagentOption(Width) * 1.0 / nxagentShadowWidth, nxagentShadowSetRatio(nxagentOption(Width) * 1.0 / nxagentShadowWidth,
nxagentOption(Height) * 1.0 / nxagentShadowHeight); nxagentOption(Height) * 1.0 / nxagentShadowHeight);
nxagentShadowCreateMainWindow(pScreen, WindowTable[0], nxagentShadowWidth, nxagentShadowHeight); nxagentShadowCreateMainWindow(pScreen, screenInfo.screens[0]->root, nxagentShadowWidth, nxagentShadowHeight);
sizeHints.max_width = WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay)); sizeHints.max_width = WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay));
sizeHints.max_height = HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay)); sizeHints.max_height = HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay));
...@@ -4456,7 +4456,7 @@ void nxagentShowPixmap(PixmapPtr pPixmap, int x, int y, int width, int height) ...@@ -4456,7 +4456,7 @@ void nxagentShowPixmap(PixmapPtr pPixmap, int x, int y, int width, int height)
XlibGC gc; XlibGC gc;
XGCValues value; XGCValues value;
XImage *image; XImage *image;
WindowPtr pWin = WindowTable[0]; WindowPtr pWin = screenInfo.screens[0]->root;
unsigned int format; unsigned int format;
int depth, pixmapWidth, pixmapHeight, length; int depth, pixmapWidth, pixmapHeight, length;
char *data; char *data;
...@@ -4668,7 +4668,7 @@ FIXME ...@@ -4668,7 +4668,7 @@ FIXME
value.fill_style = FillSolid; value.fill_style = FillSolid;
value.function = GXcopy; value.function = GXcopy;
gc = XCreateGC(shadow, nxagentWindow(WindowTable[0]), GCBackground | gc = XCreateGC(shadow, nxagentWindow(screenInfo.screens[0]->root), GCBackground |
GCForeground | GCFillStyle | GCPlaneMask | GCFunction, &value); GCForeground | GCFillStyle | GCPlaneMask | GCFunction, &value);
NXCleanImage(image); NXCleanImage(image);
......
...@@ -396,15 +396,15 @@ void nxagentRemoveSplashWindow(WindowPtr pWin) ...@@ -396,15 +396,15 @@ void nxagentRemoveSplashWindow(WindowPtr pWin)
XDestroyWindow(nxagentDisplay, nxagentSplashWindow); XDestroyWindow(nxagentDisplay, nxagentSplashWindow);
nxagentSplashWindow = None; nxagentSplashWindow = None;
nxagentRefreshWindows(WindowTable[0]); nxagentRefreshWindows(screenInfo.screens[0]->root);
#ifdef TEST #ifdef TEST
fprintf(stderr, "nxagentRemoveSplashWindow: setting the ownership of %s (%d) on window 0x%lx\n", fprintf(stderr, "nxagentRemoveSplashWindow: setting the ownership of %s (%d) on window 0x%lx\n",
"NX_CUT_BUFFER_SERVER", (int)serverCutProperty, nxagentWindow(WindowTable[0])); "NX_CUT_BUFFER_SERVER", (int)serverCutProperty, nxagentWindow(screenInfo.screens[0]->root));
#endif #endif
XSetSelectionOwner(nxagentDisplay, serverCutProperty, XSetSelectionOwner(nxagentDisplay, serverCutProperty,
nxagentWindow(WindowTable[0]), CurrentTime); nxagentWindow(screenInfo.screens[0]->root), CurrentTime);
} }
if (nxagentPixmapLogo) if (nxagentPixmapLogo)
......
...@@ -196,7 +196,7 @@ static Bool nxagentCheckWindowIntegrity(WindowPtr pWin); ...@@ -196,7 +196,7 @@ static Bool nxagentCheckWindowIntegrity(WindowPtr pWin);
WindowPtr nxagentGetWindowFromID(Window id) WindowPtr nxagentGetWindowFromID(Window id)
{ {
WindowPtr pWin = WindowTable[0]; WindowPtr pWin = screenInfo.screens[0]->root;
while (pWin && nxagentWindowPriv(pWin)) while (pWin && nxagentWindowPriv(pWin))
{ {
...@@ -508,7 +508,7 @@ FIXME: Do all the windows for which nxagentWindowTopLevel(pWin) ...@@ -508,7 +508,7 @@ FIXME: Do all the windows for which nxagentWindowTopLevel(pWin)
Bool nxagentSomeWindowsAreMapped() Bool nxagentSomeWindowsAreMapped()
{ {
WindowPtr pWin = WindowTable[0] -> firstChild; WindowPtr pWin = screenInfo.screens[0]->root -> firstChild;
while (pWin) while (pWin)
{ {
...@@ -884,7 +884,7 @@ void nxagentSwitchAllScreens(ScreenPtr pScreen, Bool switchOn) ...@@ -884,7 +884,7 @@ void nxagentSwitchAllScreens(ScreenPtr pScreen, Bool switchOn)
nxagentUpdateViewportFrame(0, 0, nxagentOption(RootWidth), nxagentOption(RootHeight)); nxagentUpdateViewportFrame(0, 0, nxagentOption(RootWidth), nxagentOption(RootHeight));
XMoveWindow(nxagentDisplay, nxagentWindow(WindowTable[pScreen -> myNum]), XMoveWindow(nxagentDisplay, nxagentWindow(pScreen->root),
nxagentOption(RootX), nxagentOption(RootY)); nxagentOption(RootX), nxagentOption(RootY));
/* /*
...@@ -995,7 +995,7 @@ void nxagentSwitchAllScreens(ScreenPtr pScreen, Bool switchOn) ...@@ -995,7 +995,7 @@ void nxagentSwitchAllScreens(ScreenPtr pScreen, Bool switchOn)
nxagentUpdateViewportFrame(0, 0, nxagentOption(Width), nxagentOption(Height)); nxagentUpdateViewportFrame(0, 0, nxagentOption(Width), nxagentOption(Height));
XMoveWindow(nxagentDisplay, nxagentWindow(WindowTable[pScreen -> myNum]), 0, 0); XMoveWindow(nxagentDisplay, nxagentWindow(pScreen->root), 0, 0);
XMapWindow(nxagentDisplay, w); XMapWindow(nxagentDisplay, w);
nxagentChangeOption(RootX, 0); nxagentChangeOption(RootX, 0);
...@@ -1156,11 +1156,11 @@ void nxagentMoveViewport(ScreenPtr pScreen, int hShift, int vShift) ...@@ -1156,11 +1156,11 @@ void nxagentMoveViewport(ScreenPtr pScreen, int hShift, int vShift)
-nxagentOption(RootY) + nxagentOption(Height)); -nxagentOption(RootY) + nxagentOption(Height));
fprintf(stderr, "nxagentMoveViewport: Root geometry x=[%d] y=[%d]\n", fprintf(stderr, "nxagentMoveViewport: Root geometry x=[%d] y=[%d]\n",
WindowTable[pScreen -> myNum] -> drawable.x, pScreen->root -> drawable.x,
WindowTable[pScreen -> myNum] -> drawable.y ); pScreen->root -> drawable.y );
#endif #endif
XMoveWindow(nxagentDisplay, nxagentWindow(WindowTable[pScreen -> myNum]), XMoveWindow(nxagentDisplay, nxagentWindow(pScreen->root),
nxagentOption(RootX), nxagentOption(RootY)); nxagentOption(RootX), nxagentOption(RootY));
if (nxagentOption(ClientOs) == ClientOsWinnt) if (nxagentOption(ClientOs) == ClientOsWinnt)
...@@ -2437,7 +2437,7 @@ static int nxagentForceExposure(WindowPtr pWin, void * ptr) ...@@ -2437,7 +2437,7 @@ static int nxagentForceExposure(WindowPtr pWin, void * ptr)
{ {
RegionPtr exposedRgn; RegionPtr exposedRgn;
BoxRec Box; BoxRec Box;
WindowPtr pRoot = WindowTable[pWin->drawable.pScreen->myNum]; WindowPtr pRoot = pWin->drawable.pScreen->root;
if (pWin -> drawable.class != InputOnly) if (pWin -> drawable.class != InputOnly)
{ {
...@@ -2491,7 +2491,7 @@ void nxagentMapDefaultWindows() ...@@ -2491,7 +2491,7 @@ void nxagentMapDefaultWindows()
for (i = 0; i < screenInfo.numScreens; i++) for (i = 0; i < screenInfo.numScreens; i++)
{ {
WindowPtr pWin = WindowTable[i]; WindowPtr pWin = screenInfo.screens[i]->root;
ScreenPtr pScreen = pWin -> drawable.pScreen; ScreenPtr pScreen = pWin -> drawable.pScreen;
...@@ -2606,7 +2606,7 @@ Bool nxagentDisconnectAllWindows(void) ...@@ -2606,7 +2606,7 @@ Bool nxagentDisconnectAllWindows(void)
for (i = 0; i < screenInfo.numScreens; i++) for (i = 0; i < screenInfo.numScreens; i++)
{ {
pWin = WindowTable[i]; pWin = screenInfo.screens[i]->root;
nxagentTraverseWindow( pWin, nxagentDisconnectWindow, &succeded); nxagentTraverseWindow( pWin, nxagentDisconnectWindow, &succeded);
nxagentDefaultWindows[i] = None; nxagentDefaultWindows[i] = None;
} }
...@@ -2684,16 +2684,16 @@ Bool nxagentReconnectAllWindows(void *p0) ...@@ -2684,16 +2684,16 @@ Bool nxagentReconnectAllWindows(void *p0)
fprintf(stderr, "nxagentReconnectAllWindows\n"); fprintf(stderr, "nxagentReconnectAllWindows\n");
#endif #endif
if (WindowTable[0] -> backgroundState == BackgroundPixmap && if (screenInfo.screens[0]->root -> backgroundState == BackgroundPixmap &&
WindowTable[0] -> background.pixmap == NULL) screenInfo.screens[0]->root -> background.pixmap == NULL)
{ {
FatalError("nxagentReconnectAllWindows: correct the FIXME\n"); FatalError("nxagentReconnectAllWindows: correct the FIXME\n");
} }
if (nxagentOption(Fullscreen)) if (nxagentOption(Fullscreen))
{ {
WindowTable[0] -> origin.x = nxagentOption(RootX); screenInfo.screens[0]->root -> origin.x = nxagentOption(RootX);
WindowTable[0] -> origin.y = nxagentOption(RootY); screenInfo.screens[0]->root -> origin.y = nxagentOption(RootY);
} }
if (!nxagentLoopOverWindows(nxagentReconnectWindow)) if (!nxagentLoopOverWindows(nxagentReconnectWindow))
...@@ -2739,8 +2739,8 @@ Bool nxagentReconnectAllWindows(void *p0) ...@@ -2739,8 +2739,8 @@ Bool nxagentReconnectAllWindows(void *p0)
if (nxagentOption(Fullscreen)) if (nxagentOption(Fullscreen))
{ {
WindowTable[0] -> origin.x = 0; screenInfo.screens[0]->root -> origin.x = 0;
WindowTable[0] -> origin.y = 0; screenInfo.screens[0]->root -> origin.y = 0;
} }
#ifdef NXAGENT_RECONNECT_WINDOW_DEBUG #ifdef NXAGENT_RECONNECT_WINDOW_DEBUG
...@@ -2751,7 +2751,7 @@ Bool nxagentReconnectAllWindows(void *p0) ...@@ -2751,7 +2751,7 @@ Bool nxagentReconnectAllWindows(void *p0)
#endif #endif
if (nxagentInitClipboard(WindowTable[0]) == -1) if (nxagentInitClipboard(screenInfo.screens[0]->root) == -1)
{ {
#ifdef WARNING #ifdef WARNING
fprintf(stderr, "nxagentReconnectAllWindows: WARNING! Couldn't initialize the clipboard.\n"); fprintf(stderr, "nxagentReconnectAllWindows: WARNING! Couldn't initialize the clipboard.\n");
...@@ -2848,7 +2848,7 @@ static Bool nxagentLoopOverWindows(void (*pF)(void *, XID, void *)) ...@@ -2848,7 +2848,7 @@ static Bool nxagentLoopOverWindows(void (*pF)(void *, XID, void *))
for (i = 0; i < screenInfo.numScreens; i++) for (i = 0; i < screenInfo.numScreens; i++)
{ {
pWin = WindowTable[i]; pWin = screenInfo.screens[i]->root;
nxagentTraverseWindow(pWin, pF, &windowSuccess); nxagentTraverseWindow(pWin, pF, &windowSuccess);
} }
...@@ -2995,7 +2995,7 @@ FIXME: Do we need to set save unders attribute here? ...@@ -2995,7 +2995,7 @@ FIXME: Do we need to set save unders attribute here?
* if a client handles this. * if a client handles this.
*/ */
if (nxagentOption(Rootless) && (pWin != WindowTable[0])) if (nxagentOption(Rootless) && (pWin != screenInfo.screens[0]->root))
{ {
if (nxagentWindowTopLevel(pWin)) if (nxagentWindowTopLevel(pWin))
{ {
...@@ -3196,7 +3196,7 @@ static void nxagentReconfigureWindow(void * param0, XID param1, void * data_buff ...@@ -3196,7 +3196,7 @@ static void nxagentReconfigureWindow(void * param0, XID param1, void * data_buff
nxagentShapeWindow(pWin); nxagentShapeWindow(pWin);
#endif #endif
if (pWin != WindowTable[0]) if (pWin != screenInfo.screens[0]->root)
{ {
if (pWin->realized) if (pWin->realized)
{ {
...@@ -3238,7 +3238,7 @@ Bool nxagentCheckIllegalRootMonitoring(WindowPtr pWin, Mask mask) ...@@ -3238,7 +3238,7 @@ Bool nxagentCheckIllegalRootMonitoring(WindowPtr pWin, Mask mask)
Mask invalidMask = SubstructureRedirectMask | ResizeRedirectMask | ButtonPressMask; Mask invalidMask = SubstructureRedirectMask | ResizeRedirectMask | ButtonPressMask;
if (nxagentOption(Rootless) && if (nxagentOption(Rootless) &&
pWin == WindowTable[0] && pWin == screenInfo.screens[0]->root &&
(mask & invalidMask)) (mask & invalidMask))
{ {
return True; return True;
......
...@@ -167,7 +167,7 @@ extern int nxagentWindowPrivateIndex; ...@@ -167,7 +167,7 @@ extern int nxagentWindowPrivateIndex;
#define nxagentRefreshScreen() \ #define nxagentRefreshScreen() \
do\ do\
{\ {\
nxagentRefreshWindows(WindowTable[0]);\ nxagentRefreshWindows(screenInfo.screens[0]->root);\
} while (0) } while (0)
WindowPtr nxagentWindowPtr(Window window); WindowPtr nxagentWindowPtr(Window window);
......
...@@ -20,7 +20,6 @@ extern Bool loadableFonts; ...@@ -20,7 +20,6 @@ extern Bool loadableFonts;
extern int defaultColorVisualClass; extern int defaultColorVisualClass;
extern Bool Must_have_memory; extern Bool Must_have_memory;
extern WindowPtr *WindowTable;
extern int GrabInProgress; extern int GrabInProgress;
extern char *ConnectionInfo; extern char *ConnectionInfo;
extern Bool noTestExtensions; extern Bool noTestExtensions;
......
...@@ -549,6 +549,7 @@ typedef struct _Screen { ...@@ -549,6 +549,7 @@ typedef struct _Screen {
void * devPrivate; void * devPrivate;
short numVisuals; short numVisuals;
VisualPtr visuals; VisualPtr visuals;
WindowPtr root;
int WindowPrivateLen; int WindowPrivateLen;
unsigned *WindowPrivateSizes; unsigned *WindowPrivateSizes;
unsigned totalWindowSize; unsigned totalWindowSize;
......
...@@ -1768,7 +1768,7 @@ miBankGetImage( ...@@ -1768,7 +1768,7 @@ miBankGetImage(
pBankImage); pBankImage);
(*pScreenPriv->pBankGC->ops->CopyArea)( (*pScreenPriv->pBankGC->ops->CopyArea)(
(DrawablePtr)WindowTable[pScreen->myNum], (DrawablePtr)pScreen->root,
(DrawablePtr)pScreenPriv->pBankPixmap, (DrawablePtr)pScreenPriv->pBankPixmap,
pScreenPriv->pBankGC, pScreenPriv->pBankGC,
sx + pDrawable->x, sy + pDrawable->y, w, h, 0, 0); sx + pDrawable->x, sy + pDrawable->y, w, h, 0, 0);
...@@ -1835,7 +1835,7 @@ miBankGetSpans( ...@@ -1835,7 +1835,7 @@ miBankGetSpans(
continue; continue;
(*pScreenPriv->pBankGC->ops->CopyArea)( (*pScreenPriv->pBankGC->ops->CopyArea)(
(DrawablePtr)WindowTable[pScreen->myNum], (DrawablePtr)pScreen->root,
(DrawablePtr)pScreenPriv->pBankPixmap, (DrawablePtr)pScreenPriv->pBankPixmap,
pScreenPriv->pBankGC, pScreenPriv->pBankGC,
ppt->x, ppt->y, *pwidth, 1, 0, 0); ppt->x, ppt->y, *pwidth, 1, 0, 0);
...@@ -1958,7 +1958,7 @@ miBankCopyWindow( ...@@ -1958,7 +1958,7 @@ miBankCopyWindow(
ScreenPtr pScreen = pWindow->drawable.pScreen; ScreenPtr pScreen = pWindow->drawable.pScreen;
GCPtr pGC; GCPtr pGC;
int dx, dy, nBox; int dx, dy, nBox;
DrawablePtr pDrawable = (DrawablePtr)WindowTable[pScreen->myNum]; DrawablePtr pDrawable = (DrawablePtr)pScreen->root;
RegionPtr pRgnDst; RegionPtr pRgnDst;
BoxPtr pBox, pBoxTmp, pBoxNext, pBoxBase, pBoxNew1, pBoxNew2; BoxPtr pBox, pBoxTmp, pBoxNext, pBoxBase, pBoxNew1, pBoxNew2;
XID subWindowMode = IncludeInferiors; XID subWindowMode = IncludeInferiors;
......
...@@ -477,7 +477,7 @@ miDCPutUpCursor (pScreen, pCursor, x, y, source, mask) ...@@ -477,7 +477,7 @@ miDCPutUpCursor (pScreen, pCursor, x, y, source, mask)
return FALSE; return FALSE;
} }
pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr;
pWin = WindowTable[pScreen->myNum]; pWin = pScreen->root;
#ifdef ARGB_CURSOR #ifdef ARGB_CURSOR
if (pPriv->pPicture) if (pPriv->pPicture)
{ {
...@@ -523,7 +523,7 @@ miDCSaveUnderCursor (pScreen, x, y, w, h) ...@@ -523,7 +523,7 @@ miDCSaveUnderCursor (pScreen, x, y, w, h)
pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr;
pSave = pScreenPriv->pSave; pSave = pScreenPriv->pSave;
pWin = WindowTable[pScreen->myNum]; pWin = pScreen->root;
if (!pSave || pSave->drawable.width < w || pSave->drawable.height < h) if (!pSave || pSave->drawable.width < w || pSave->drawable.height < h)
{ {
if (pSave) if (pSave)
...@@ -555,7 +555,7 @@ miDCRestoreUnderCursor (pScreen, x, y, w, h) ...@@ -555,7 +555,7 @@ miDCRestoreUnderCursor (pScreen, x, y, w, h)
pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr;
pSave = pScreenPriv->pSave; pSave = pScreenPriv->pSave;
pWin = WindowTable[pScreen->myNum]; pWin = pScreen->root;
if (!pSave) if (!pSave)
return FALSE; return FALSE;
if (!EnsureGC(pScreenPriv->pRestoreGC, pWin)) if (!EnsureGC(pScreenPriv->pRestoreGC, pWin))
...@@ -581,7 +581,7 @@ miDCChangeSave (pScreen, x, y, w, h, dx, dy) ...@@ -581,7 +581,7 @@ miDCChangeSave (pScreen, x, y, w, h, dx, dy)
pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr;
pSave = pScreenPriv->pSave; pSave = pScreenPriv->pSave;
pWin = WindowTable[pScreen->myNum]; pWin = pScreen->root;
/* /*
* restore the bits which are about to get trashed * restore the bits which are about to get trashed
*/ */
...@@ -723,7 +723,7 @@ miDCMoveCursor (pScreen, pCursor, x, y, w, h, dx, dy, source, mask) ...@@ -723,7 +723,7 @@ miDCMoveCursor (pScreen, pCursor, x, y, w, h, dx, dy, source, mask)
return FALSE; return FALSE;
} }
pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr;
pWin = WindowTable[pScreen->myNum]; pWin = pScreen->root;
pTemp = pScreenPriv->pTemp; pTemp = pScreenPriv->pTemp;
if (!pTemp || if (!pTemp ||
pTemp->drawable.width != pScreenPriv->pSave->drawable.width || pTemp->drawable.width != pScreenPriv->pSave->drawable.width ||
......
...@@ -468,7 +468,7 @@ miSendExposures(pWin, pRgn, dx, dy) ...@@ -468,7 +468,7 @@ miSendExposures(pWin, pRgn, dx, dy)
if(!pWin->parent) { if(!pWin->parent) {
x = panoramiXdataPtr[scrnum].x; x = panoramiXdataPtr[scrnum].x;
y = panoramiXdataPtr[scrnum].y; y = panoramiXdataPtr[scrnum].y;
pWin = WindowTable[0]; pWin = screenInfo.screens[0]->root;
realWin = pWin->drawable.id; realWin = pWin->drawable.id;
} else if (scrnum) { } else if (scrnum) {
PanoramiXRes *win; PanoramiXRes *win;
...@@ -715,7 +715,7 @@ int what; ...@@ -715,7 +715,7 @@ int what;
gcmask |= GCFunction | GCClipMask; gcmask |= GCFunction | GCClipMask;
i = pScreen->myNum; i = pScreen->myNum;
pRoot = WindowTable[i]; pRoot = screenInfo.screens[i]->root;
pBgWin = pWin; pBgWin = pWin;
if (what == PW_BORDER) if (what == PW_BORDER)
......
...@@ -317,7 +317,7 @@ miOverlayReparentWindow(WindowPtr pWin, WindowPtr pPriorParent) ...@@ -317,7 +317,7 @@ miOverlayReparentWindow(WindowPtr pWin, WindowPtr pPriorParent)
{ {
if(IN_UNDERLAY(pWin) || HasUnderlayChildren(pWin)) { if(IN_UNDERLAY(pWin) || HasUnderlayChildren(pWin)) {
/* This could probably be more optimal */ /* This could probably be more optimal */
RebuildTree(WindowTable[pWin->drawable.pScreen->myNum]->firstChild); RebuildTree(pWin->drawable.pScreen->root->firstChild);
} }
} }
...@@ -1733,7 +1733,7 @@ miOverlayChangeBorderWidth( ...@@ -1733,7 +1733,7 @@ miOverlayChangeBorderWidth(
void void
miOverlaySetRootClip(ScreenPtr pScreen, Bool enable) miOverlaySetRootClip(ScreenPtr pScreen, Bool enable)
{ {
WindowPtr pRoot = WindowTable[pScreen->myNum]; WindowPtr pRoot = pScreen->root;
miOverlayTreePtr pTree = MIOVERLAY_GET_WINDOW_TREE(pRoot); miOverlayTreePtr pTree = MIOVERLAY_GET_WINDOW_TREE(pRoot);
MARK_UNDERLAY(pRoot); MARK_UNDERLAY(pRoot);
......
...@@ -2663,7 +2663,7 @@ PanoramiXRenderCreatePicture (ClientPtr client) ...@@ -2663,7 +2663,7 @@ PanoramiXRenderCreatePicture (ClientPtr client)
newPict->info[0].id = stuff->pid; newPict->info[0].id = stuff->pid;
if (refDraw->type == XRT_WINDOW && if (refDraw->type == XRT_WINDOW &&
stuff->drawable == WindowTable[0]->drawable.id) stuff->drawable == screenInfo.screens[0]->root->drawable.id)
{ {
newPict->u.pict.root = TRUE; newPict->u.pict.root = TRUE;
} }
......
...@@ -616,7 +616,7 @@ ReplaceCursor (CursorPtr pCursor, ...@@ -616,7 +616,7 @@ ReplaceCursor (CursorPtr pCursor,
} }
} }
/* this "knows" that WindowHasNewCursor doesn't depend on it's argument */ /* this "knows" that WindowHasNewCursor doesn't depend on it's argument */
WindowHasNewCursor (WindowTable[0]); WindowHasNewCursor (screenInfo.screens[0]->root);
} }
static Bool static Bool
......
...@@ -49,6 +49,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -49,6 +49,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "inputstr.h" #include "inputstr.h"
#include "opaque.h" #include "opaque.h"
#include "property.h" #include "property.h"
#include "scrnintstr.h"
#define XKBSRV_NEED_FILE_FUNCS #define XKBSRV_NEED_FILE_FUNCS
#include <nx-X11/extensions/XKBsrv.h> #include <nx-X11/extensions/XKBsrv.h>
#include <nx-X11/extensions/XKBgeom.h> #include <nx-X11/extensions/XKBgeom.h>
...@@ -230,7 +231,7 @@ char * pval; ...@@ -230,7 +231,7 @@ char * pval;
ErrorF("Internal Error! bad size (%d!=%d) for _XKB_RULES_NAMES\n", ErrorF("Internal Error! bad size (%d!=%d) for _XKB_RULES_NAMES\n",
out,len); out,len);
} }
ChangeWindowProperty(WindowTable[0],name,XA_STRING,8,PropModeReplace, ChangeWindowProperty(screenInfo.screens[0]->root,name,XA_STRING,8,PropModeReplace,
len,pval,True); len,pval,True);
DEALLOCATE_LOCAL(pval); DEALLOCATE_LOCAL(pval);
return True; return True;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment