mirror of
https://github.com/X11Libre/xserver.git
synced 2026-03-24 03:44:06 +00:00
Xinerama: lambda-esque macro for walking Xinerama screens
Move the walking loops on Xinerama screens into lambda-esque macros: the callers look quite like we've been using lambda functions and closures, but actually are just fancy macro trickery. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
committed by
Enrico Weigelt
parent
e3d9f4c3ef
commit
eb17b34362
@@ -134,9 +134,7 @@ PanoramiXCreateWindow(ClientPtr client)
|
||||
parentIsRoot = (stuff->parent == screenInfo.screens[0]->root->drawable.id)
|
||||
|| (stuff->parent == screenInfo.screens[0]->screensaver.wid);
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->wid = newWin->info[walkScreenIdx].id;
|
||||
stuff->parent = parent->info[walkScreenIdx].id;
|
||||
if (parentIsRoot) {
|
||||
@@ -154,7 +152,7 @@ PanoramiXCreateWindow(ClientPtr client)
|
||||
result = (*SavedProcVector[X_CreateWindow]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
if (result == Success)
|
||||
AddResource(newWin->info[0].id, XRT_WINDOW, newWin);
|
||||
@@ -224,8 +222,7 @@ PanoramiXChangeWindowAttributes(ClientPtr client)
|
||||
}
|
||||
}
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->window = win->info[walkScreenIdx].id;
|
||||
if (backPix)
|
||||
*((CARD32 *) &stuff[1] + pback_offset) = backPix->info[walkScreenIdx].id;
|
||||
@@ -234,7 +231,7 @@ PanoramiXChangeWindowAttributes(ClientPtr client)
|
||||
if (cmap)
|
||||
*((CARD32 *) &stuff[1] + cmap_offset) = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_ChangeWindowAttributes]) (client);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -254,13 +251,12 @@ PanoramiXDestroyWindow(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->id = win->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_DestroyWindow]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/* Since ProcDestroyWindow is using FreeResource, it will free
|
||||
our resource for us on the last pass through the loop above */
|
||||
@@ -283,13 +279,12 @@ PanoramiXDestroySubwindows(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->id = win->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_DestroySubwindows]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/* DestroySubwindows is using FreeResource which will free
|
||||
our resources for us on the last pass through the loop above */
|
||||
@@ -312,13 +307,12 @@ PanoramiXChangeSaveSet(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->window = win->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_ChangeSaveSet]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -350,9 +344,7 @@ PanoramiXReparentWindow(ClientPtr client)
|
||||
parentIsRoot = (stuff->parent == screenInfo.screens[0]->root->drawable.id)
|
||||
|| (stuff->parent == screenInfo.screens[0]->screensaver.wid);
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->window = win->info[walkScreenIdx].id;
|
||||
stuff->parent = parent->info[walkScreenIdx].id;
|
||||
if (parentIsRoot) {
|
||||
@@ -362,7 +354,7 @@ PanoramiXReparentWindow(ClientPtr client)
|
||||
result = (*SavedProcVector[X_ReparentWindow]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -382,13 +374,12 @@ PanoramiXMapWindow(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
stuff->id = win->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_MapWindow]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -408,13 +399,12 @@ PanoramiXMapSubwindows(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
stuff->id = win->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_MapSubwindows]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -434,13 +424,12 @@ PanoramiXUnmapWindow(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
stuff->id = win->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_UnmapWindow]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -460,13 +449,12 @@ PanoramiXUnmapSubwindows(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
stuff->id = win->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_UnmapSubwindows]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -527,9 +515,7 @@ PanoramiXConfigureWindow(ClientPtr client)
|
||||
|
||||
/* have to go forward or you get expose events before
|
||||
ConfigureNotify events */
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
stuff->window = win->info[walkScreenIdx].id;
|
||||
if (sib)
|
||||
*((CARD32 *) &stuff[1] + sib_offset) = sib->info[walkScreenIdx].id;
|
||||
@@ -540,7 +526,7 @@ PanoramiXConfigureWindow(ClientPtr client)
|
||||
result = (*SavedProcVector[X_ConfigureWindow]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -560,13 +546,12 @@ PanoramiXCirculateWindow(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
stuff->window = win->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_CirculateWindow]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -729,14 +714,13 @@ PanoramiXCreatePixmap(ClientPtr client)
|
||||
newPix->u.pix.shared = FALSE;
|
||||
panoramix_setup_ids(newPix, client, stuff->pid);
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->pid = newPix->info[walkScreenIdx].id;
|
||||
stuff->drawable = refDraw->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_CreatePixmap]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
if (result == Success)
|
||||
AddResource(newPix->info[0].id, XRT_PIXMAP, newPix);
|
||||
@@ -763,13 +747,12 @@ PanoramiXFreePixmap(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->id = pix->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_FreePixmap]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/* Since ProcFreePixmap is using FreeResource, it will free
|
||||
our resource for us on the last pass through the loop above */
|
||||
@@ -837,8 +820,7 @@ PanoramiXCreateGC(ClientPtr client)
|
||||
newGC->type = XRT_GC;
|
||||
panoramix_setup_ids(newGC, client, stuff->gc);
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->gc = newGC->info[walkScreenIdx].id;
|
||||
stuff->drawable = refDraw->info[walkScreenIdx].id;
|
||||
if (tile)
|
||||
@@ -850,7 +832,7 @@ PanoramiXCreateGC(ClientPtr client)
|
||||
result = (*SavedProcVector[X_CreateGC]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
if (result == Success)
|
||||
AddResource(newGC->info[0].id, XRT_GC, newGC);
|
||||
@@ -912,8 +894,7 @@ PanoramiXChangeGC(ClientPtr client)
|
||||
}
|
||||
}
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->gc = gc->info[walkScreenIdx].id;
|
||||
if (tile)
|
||||
*((CARD32 *) &stuff[1] + tile_offset) = tile->info[walkScreenIdx].id;
|
||||
@@ -924,7 +905,7 @@ PanoramiXChangeGC(ClientPtr client)
|
||||
result = (*SavedProcVector[X_ChangeGC]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -949,14 +930,13 @@ PanoramiXCopyGC(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->srcGC = srcGC->info[walkScreenIdx].id;
|
||||
stuff->dstGC = dstGC->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_CopyGC]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -976,13 +956,12 @@ PanoramiXSetDashes(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->gc = gc->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_SetDashes]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1002,13 +981,12 @@ PanoramiXSetClipRectangles(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->gc = gc->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_SetClipRectangles]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1028,13 +1006,12 @@ PanoramiXFreeGC(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->id = gc->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_FreeGC]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/* Since ProcFreeGC is using FreeResource, it will free
|
||||
our resource for us on the last pass through the loop above */
|
||||
@@ -1062,9 +1039,7 @@ PanoramiXClearToBackground(ClientPtr client)
|
||||
y = stuff->y;
|
||||
isRoot = win->u.win.root;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->window = win->info[walkScreenIdx].id;
|
||||
if (isRoot) {
|
||||
stuff->x = x - walkScreen->x;
|
||||
@@ -1073,7 +1048,7 @@ PanoramiXClearToBackground(ClientPtr client)
|
||||
result = (*SavedProcVector[X_ClearArea]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1141,8 +1116,7 @@ PanoramiXCopyArea(ClientPtr client)
|
||||
char *data;
|
||||
int pitch, rc;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
rc = dixLookupDrawable(drawables + walkScreenIdx, src->info[walkScreenIdx].id, client, 0,
|
||||
DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
@@ -1151,7 +1125,7 @@ PanoramiXCopyArea(ClientPtr client)
|
||||
drawables[walkScreenIdx]->width,
|
||||
drawables[walkScreenIdx]->height,
|
||||
IncludeInferiors);
|
||||
}
|
||||
});
|
||||
|
||||
pitch = PixmapBytePad(width, drawables[0]->depth);
|
||||
if (!(data = calloc(height, pitch)))
|
||||
@@ -1160,7 +1134,7 @@ PanoramiXCopyArea(ClientPtr client)
|
||||
XineramaGetImageData(drawables, srcx, srcy, width, height, ZPixmap, ~0,
|
||||
data, pitch, srcIsRoot);
|
||||
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->gc = gc->info[walkScreenIdx].id;
|
||||
VALIDATE_DRAWABLE_AND_GC(dst->info[walkScreenIdx].id, pDst, DixWriteAccess);
|
||||
if (drawables[0]->depth != pDst->depth) {
|
||||
@@ -1173,7 +1147,7 @@ PanoramiXCopyArea(ClientPtr client)
|
||||
width, height, 0, ZPixmap, data);
|
||||
if (dstShared)
|
||||
break;
|
||||
}
|
||||
});
|
||||
free(data);
|
||||
|
||||
if (pGC && pGC->graphicsExposures) {
|
||||
@@ -1196,8 +1170,7 @@ PanoramiXCopyArea(ClientPtr client)
|
||||
RegionInit(&rgn, &sourceBox, 1);
|
||||
|
||||
/* subtract the (screen-space) clips of the source drawables */
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
RegionPtr sd;
|
||||
|
||||
if (pGC->subWindowMode == IncludeInferiors)
|
||||
@@ -1215,7 +1188,7 @@ PanoramiXCopyArea(ClientPtr client)
|
||||
|
||||
if (pGC->subWindowMode == IncludeInferiors)
|
||||
RegionDestroy(sd);
|
||||
}
|
||||
});
|
||||
|
||||
/* -dx/-dy to get back to dest-relative, plus request offsets */
|
||||
RegionTranslate(&rgn, -dx + dstx, -dy + dsty);
|
||||
@@ -1236,9 +1209,7 @@ PanoramiXCopyArea(ClientPtr client)
|
||||
|
||||
RegionNull(&totalReg);
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
RegionPtr pRgn;
|
||||
|
||||
stuff->dstDrawable = dst->info[walkScreenIdx].id;
|
||||
@@ -1284,7 +1255,7 @@ PanoramiXCopyArea(ClientPtr client)
|
||||
|
||||
if (dstShared)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
if (pGC->graphicsExposures) {
|
||||
Bool overlap;
|
||||
@@ -1349,9 +1320,7 @@ PanoramiXCopyPlane(ClientPtr client)
|
||||
|
||||
RegionNull(&totalReg);
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
RegionPtr pRgn;
|
||||
|
||||
stuff->dstDrawable = dst->info[walkScreenIdx].id;
|
||||
@@ -1399,7 +1368,7 @@ PanoramiXCopyPlane(ClientPtr client)
|
||||
|
||||
if (dstShared)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
if (pGC->graphicsExposures) {
|
||||
Bool overlap;
|
||||
@@ -1446,9 +1415,7 @@ PanoramiXPolyPoint(ClientPtr client)
|
||||
|
||||
memcpy((char *) origPts, (char *) &stuff[1], npoint * sizeof(xPoint));
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
if (walkScreenIdx)
|
||||
memcpy(&stuff[1], origPts, npoint * sizeof(xPoint));
|
||||
|
||||
@@ -1474,7 +1441,8 @@ PanoramiXPolyPoint(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PolyPoint]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
free(origPts);
|
||||
return result;
|
||||
}
|
||||
@@ -1514,9 +1482,7 @@ PanoramiXPolyLine(ClientPtr client)
|
||||
return BadAlloc;
|
||||
memcpy((char *) origPts, (char *) &stuff[1], npoint * sizeof(xPoint));
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
if (walkScreenIdx)
|
||||
memcpy(&stuff[1], origPts, npoint * sizeof(xPoint));
|
||||
|
||||
@@ -1542,7 +1508,8 @@ PanoramiXPolyLine(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PolyLine]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
free(origPts);
|
||||
return result;
|
||||
}
|
||||
@@ -1586,9 +1553,7 @@ PanoramiXPolySegment(ClientPtr client)
|
||||
return BadAlloc;
|
||||
memcpy((char *) origSegs, (char *) &stuff[1], nsegs * sizeof(xSegment));
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
if (walkScreenIdx) /* skip on screen #0 */
|
||||
memcpy(&stuff[1], origSegs, nsegs * sizeof(xSegment));
|
||||
|
||||
@@ -1613,7 +1578,8 @@ PanoramiXPolySegment(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PolySegment]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
free(origSegs);
|
||||
return result;
|
||||
}
|
||||
@@ -1658,10 +1624,7 @@ PanoramiXPolyRectangle(ClientPtr client)
|
||||
memcpy((char *) origRecs, (char *) &stuff[1],
|
||||
nrects * sizeof(xRectangle));
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
if (walkScreenIdx) /* skip on screen #0 */
|
||||
memcpy(&stuff[1], origRecs, nrects * sizeof(xRectangle));
|
||||
|
||||
@@ -1684,7 +1647,8 @@ PanoramiXPolyRectangle(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PolyRectangle]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
free(origRecs);
|
||||
return result;
|
||||
}
|
||||
@@ -1728,10 +1692,7 @@ PanoramiXPolyArc(ClientPtr client)
|
||||
return BadAlloc;
|
||||
memcpy((char *) origArcs, (char *) &stuff[1], narcs * sizeof(xArc));
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
if (walkScreenIdx) /* skip screen #0 */
|
||||
memcpy(&stuff[1], origArcs, narcs * sizeof(xArc));
|
||||
|
||||
@@ -1753,7 +1714,8 @@ PanoramiXPolyArc(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PolyArc]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
free(origArcs);
|
||||
return result;
|
||||
}
|
||||
@@ -1795,10 +1757,7 @@ PanoramiXFillPoly(ClientPtr client)
|
||||
memcpy((char *) locPts, (char *) &stuff[1],
|
||||
count * sizeof(DDXPointRec));
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
if (walkScreenIdx) /* skip screen #0 */
|
||||
memcpy(&stuff[1], locPts, count * sizeof(DDXPointRec));
|
||||
|
||||
@@ -1823,7 +1782,8 @@ PanoramiXFillPoly(ClientPtr client)
|
||||
result = (*SavedProcVector[X_FillPoly]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
free(locPts);
|
||||
return result;
|
||||
}
|
||||
@@ -1867,10 +1827,7 @@ PanoramiXPolyFillRectangle(ClientPtr client)
|
||||
memcpy((char *) origRects, (char *) &stuff[1],
|
||||
things * sizeof(xRectangle));
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
if (walkScreenIdx) /* skip screen #0 */
|
||||
memcpy(&stuff[1], origRects, things * sizeof(xRectangle));
|
||||
|
||||
@@ -1893,7 +1850,8 @@ PanoramiXPolyFillRectangle(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PolyFillRectangle]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
free(origRects);
|
||||
return result;
|
||||
}
|
||||
@@ -1937,10 +1895,7 @@ PanoramiXPolyFillArc(ClientPtr client)
|
||||
return BadAlloc;
|
||||
memcpy((char *) origArcs, (char *) &stuff[1], narcs * sizeof(xArc));
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
if (walkScreenIdx) /* skip screen #0 */
|
||||
memcpy(&stuff[1], origArcs, narcs * sizeof(xArc));
|
||||
|
||||
@@ -1963,7 +1918,8 @@ PanoramiXPolyFillArc(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PolyFillArc]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
free(origArcs);
|
||||
return result;
|
||||
}
|
||||
@@ -2000,10 +1956,7 @@ PanoramiXPutImage(ClientPtr client)
|
||||
orig_x = stuff->dstX;
|
||||
orig_y = stuff->dstY;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
if (isRoot) {
|
||||
stuff->dstX = orig_x - walkScreen->x;
|
||||
stuff->dstY = orig_y - walkScreen->y;
|
||||
@@ -2013,7 +1966,8 @@ PanoramiXPutImage(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PutImage]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2083,23 +2037,19 @@ PanoramiXGetImage(ClientPtr client)
|
||||
|
||||
drawables[0] = pDraw;
|
||||
|
||||
unsigned int walkScreenIdx;
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
if (!walkScreenIdx)
|
||||
continue; /* skip screen #0 */
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD_SKIP0({
|
||||
rc = dixLookupDrawable(drawables + walkScreenIdx,
|
||||
draw->info[walkScreenIdx].id,
|
||||
client, 0,
|
||||
DixGetAttrAccess);
|
||||
if (rc != Success)
|
||||
return rc;
|
||||
}
|
||||
FOR_NSCREENS_FORWARD(walkScreenIdx) {
|
||||
drawables[walkScreenIdx]->pScreen->SourceValidate(drawables[walkScreenIdx], 0, 0,
|
||||
drawables[walkScreenIdx]->width,
|
||||
drawables[walkScreenIdx]->height,
|
||||
IncludeInferiors);
|
||||
}
|
||||
});
|
||||
|
||||
XINERAMA_FOR_EACH_SCREEN_FORWARD({
|
||||
DrawablePtr d = drawables[walkScreenIdx];
|
||||
d->pScreen->SourceValidate(d, 0, 0, d->width, d->height, IncludeInferiors);
|
||||
});
|
||||
|
||||
size_t length;
|
||||
if (format == ZPixmap) {
|
||||
@@ -2215,9 +2165,7 @@ PanoramiXPolyText8(ClientPtr client)
|
||||
orig_x = stuff->x;
|
||||
orig_y = stuff->y;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->drawable = draw->info[walkScreenIdx].id;
|
||||
stuff->gc = gc->info[walkScreenIdx].id;
|
||||
if (isRoot) {
|
||||
@@ -2227,7 +2175,8 @@ PanoramiXPolyText8(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PolyText8]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2261,10 +2210,7 @@ PanoramiXPolyText16(ClientPtr client)
|
||||
orig_x = stuff->x;
|
||||
orig_y = stuff->y;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->drawable = draw->info[walkScreenIdx].id;
|
||||
stuff->gc = gc->info[walkScreenIdx].id;
|
||||
if (isRoot) {
|
||||
@@ -2274,7 +2220,8 @@ PanoramiXPolyText16(ClientPtr client)
|
||||
result = (*SavedProcVector[X_PolyText16]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2308,9 +2255,7 @@ PanoramiXImageText8(ClientPtr client)
|
||||
orig_x = stuff->x;
|
||||
orig_y = stuff->y;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->drawable = draw->info[walkScreenIdx].id;
|
||||
stuff->gc = gc->info[walkScreenIdx].id;
|
||||
if (isRoot) {
|
||||
@@ -2320,7 +2265,8 @@ PanoramiXImageText8(ClientPtr client)
|
||||
result = (*SavedProcVector[X_ImageText8]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2354,10 +2300,7 @@ PanoramiXImageText16(ClientPtr client)
|
||||
orig_x = stuff->x;
|
||||
orig_y = stuff->y;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
ScreenPtr walkScreen = screenInfo.screens[walkScreenIdx];
|
||||
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->drawable = draw->info[walkScreenIdx].id;
|
||||
stuff->gc = gc->info[walkScreenIdx].id;
|
||||
if (isRoot) {
|
||||
@@ -2367,7 +2310,8 @@ PanoramiXImageText16(ClientPtr client)
|
||||
result = (*SavedProcVector[X_ImageText16]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2394,15 +2338,14 @@ PanoramiXCreateColormap(ClientPtr client)
|
||||
|
||||
orig_visual = stuff->visual;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->mid = newCmap->info[walkScreenIdx].id;
|
||||
stuff->window = win->info[walkScreenIdx].id;
|
||||
stuff->visual = PanoramiXTranslateVisualID(walkScreenIdx, orig_visual);
|
||||
result = (*SavedProcVector[X_CreateColormap]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
if (result == Success)
|
||||
AddResource(newCmap->info[0].id, XRT_COLORMAP, newCmap);
|
||||
@@ -2429,13 +2372,12 @@ PanoramiXFreeColormap(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->id = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_FreeColormap]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/* Since ProcFreeColormap is using FreeResource, it will free
|
||||
our resource for us on the last pass through the loop above */
|
||||
@@ -2467,14 +2409,13 @@ PanoramiXCopyColormapAndFree(ClientPtr client)
|
||||
newCmap->type = XRT_COLORMAP;
|
||||
panoramix_setup_ids(newCmap, client, stuff->mid);
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->srcCmap = cmap->info[walkScreenIdx].id;
|
||||
stuff->mid = newCmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_CopyColormapAndFree]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
if (result == Success)
|
||||
AddResource(newCmap->info[0].id, XRT_COLORMAP, newCmap);
|
||||
@@ -2500,13 +2441,13 @@ PanoramiXInstallColormap(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->id = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_InstallColormap]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2526,13 +2467,13 @@ PanoramiXUninstallColormap(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->id = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_UninstallColormap]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2553,13 +2494,13 @@ PanoramiXAllocColor(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->cmap = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_AllocColor]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2580,13 +2521,13 @@ PanoramiXAllocNamedColor(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->cmap = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_AllocNamedColor]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2607,13 +2548,13 @@ PanoramiXAllocColorCells(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->cmap = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_AllocColorCells]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2634,13 +2575,13 @@ PanoramiXAllocColorPlanes(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->cmap = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_AllocColorPlanes]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2661,11 +2602,11 @@ PanoramiXFreeColors(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->cmap = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_FreeColors]) (client);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2686,13 +2627,13 @@ PanoramiXStoreColors(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->cmap = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_StoreColors]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -2713,12 +2654,12 @@ PanoramiXStoreNamedColor(ClientPtr client)
|
||||
if (result != Success)
|
||||
return result;
|
||||
|
||||
int walkScreenIdx;
|
||||
FOR_NSCREENS_BACKWARD(walkScreenIdx) {
|
||||
XINERAMA_FOR_EACH_SCREEN_BACKWARD({
|
||||
stuff->cmap = cmap->info[walkScreenIdx].id;
|
||||
result = (*SavedProcVector[X_StoreNamedColor]) (client);
|
||||
if (result != Success)
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user