summaryrefslogtreecommitdiff
path: root/Xext
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-03-23 13:38:37 +0900
committerKeith Packard <keithp@keithp.com>2011-03-23 13:38:37 +0900
commit03f45df93469f6aef391e97007b9614e0770cc4c (patch)
tree3cfde05ac25184ebdf70c66a51baf8019c69977e /Xext
parentefcb7275ce5de651f91ba4ff8bb227dfb68bb154 (diff)
parent5fb329a04a18835ce864d0563f6dfeb3d3c78d69 (diff)
Merge remote-tracking branch 'airlied/xinerama-cleanup'
Diffstat (limited to 'Xext')
-rw-r--r--Xext/panoramiX.c16
-rw-r--r--Xext/panoramiX.h4
-rw-r--r--Xext/panoramiXprocs.c50
-rw-r--r--Xext/panoramiXsrv.h11
-rw-r--r--Xext/shm.c6
-rw-r--r--Xext/xvdisp.c4
6 files changed, 46 insertions, 45 deletions
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 391346a6b..00afe94f1 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -393,7 +393,7 @@ static void XineramaInitData(ScreenPtr pScreen)
int i, w, h;
RegionNull(&PanoramiXScreenRegion);
- for (i = 0; i < PanoramiXNumScreens; i++) {
+ FOR_NSCREENS(i) {
BoxRec TheBox;
RegionRec ScreenRegion;
@@ -413,7 +413,7 @@ static void XineramaInitData(ScreenPtr pScreen)
PanoramiXPixWidth = screenInfo.screens[0]->x + screenInfo.screens[0]->width;
PanoramiXPixHeight = screenInfo.screens[0]->y + screenInfo.screens[0]->height;
- for (i = 1; i < PanoramiXNumScreens; i++) {
+ FOR_NSCREENS_FORWARD_SKIP(i) {
pScreen = screenInfo.screens[i];
w = pScreen->x + pScreen->width;
h = pScreen->y + pScreen->height;
@@ -478,7 +478,7 @@ void PanoramiXExtensionInit(int argc, char *argv[])
* run in non-PanoramiXeen mode.
*/
- for (i = 0; i < PanoramiXNumScreens; i++) {
+ FOR_NSCREENS(i) {
pScreen = screenInfo.screens[i];
pScreenPriv = malloc(sizeof(PanoramiXScreenRec));
dixSetPrivate(&pScreen->devPrivates, PanoramiXScreenKey,
@@ -740,7 +740,7 @@ PanoramiXMaybeAddDepth(DepthPtr pDepth)
int j, k;
Bool found = FALSE;
- for (j = 1; j < PanoramiXNumScreens; j++) {
+ FOR_NSCREENS_FORWARD_SKIP(j) {
pScreen = screenInfo.screens[j];
for (k = 0; k < pScreen->numDepths; k++) {
if (pScreen->allowedDepths[k].depth == pDepth->depth) {
@@ -773,7 +773,7 @@ PanoramiXMaybeAddVisual(VisualPtr pVisual)
int j, k;
Bool found = FALSE;
- for (j = 1; j < PanoramiXNumScreens; j++) {
+ FOR_NSCREENS_FORWARD_SKIP(j) {
pScreen = screenInfo.screens[j];
found = FALSE;
@@ -836,7 +836,7 @@ PanoramiXConsolidate(void)
saver = malloc(sizeof(PanoramiXRes));
saver->type = XRT_WINDOW;
- for (i = 0; i < PanoramiXNumScreens; i++) {
+ FOR_NSCREENS(i) {
ScreenPtr pScreen = screenInfo.screens[i];
root->info[i].id = pScreen->root->drawable.id;
root->u.win.class = InputOutput;
@@ -1074,7 +1074,7 @@ ProcXineramaQueryScreens(ClientPtr client)
xXineramaScreenInfo scratch;
int i;
- for(i = 0; i < PanoramiXNumScreens; i++) {
+ FOR_NSCREENS(i) {
scratch.x_org = screenInfo.screens[i]->x;
scratch.y_org = screenInfo.screens[i]->y;
scratch.width = screenInfo.screens[i]->width;
@@ -1179,7 +1179,7 @@ XineramaGetImageData(
depth = (format == XYPixmap) ? 1 : pDraw->depth;
- for(i = 0; i < PanoramiXNumScreens; i++) {
+ FOR_NSCREENS(i) {
BoxRec TheBox;
ScreenPtr pScreen;
pDraw = pDrawables[i];
diff --git a/Xext/panoramiX.h b/Xext/panoramiX.h
index a8684f0d2..71651e558 100644
--- a/Xext/panoramiX.h
+++ b/Xext/panoramiX.h
@@ -44,7 +44,7 @@ Equipment Corporation.
#include <X11/extensions/panoramiXproto.h>
#undef _PANORAMIX_SERVER
#include "gcstruct.h"
-
+#include "dixstruct.h"
typedef struct _PanoramiXInfo {
XID id ;
@@ -70,9 +70,11 @@ typedef struct {
} PanoramiXRes;
#define FOR_NSCREENS_FORWARD(j) for(j = 0; j < PanoramiXNumScreens; j++)
+#define FOR_NSCREENS_FORWARD_SKIP(j) for(j = 1; j < PanoramiXNumScreens; j++)
#define FOR_NSCREENS_BACKWARD(j) for(j = PanoramiXNumScreens - 1; j >= 0; j--)
#define FOR_NSCREENS(j) FOR_NSCREENS_FORWARD(j)
#define IS_SHARED_PIXMAP(r) (((r)->type == XRT_PIXMAP) && (r)->u.pix.shared)
+#define IS_ROOT_DRAWABLE(d) (((d)->type == XRT_WINDOW) && (d)->u.win.root)
#endif /* _PANORAMIX_H_ */
diff --git a/Xext/panoramiXprocs.c b/Xext/panoramiXprocs.c
index d84316895..9ea461173 100644
--- a/Xext/panoramiXprocs.c
+++ b/Xext/panoramiXprocs.c
@@ -120,9 +120,7 @@ int PanoramiXCreateWindow(ClientPtr client)
newWin->u.win.visibility = VisibilityNotViewable;
newWin->u.win.class = stuff->class;
newWin->u.win.root = FALSE;
- newWin->info[0].id = stuff->wid;
- for(j = 1; j < PanoramiXNumScreens; j++)
- newWin->info[j].id = FakeClientID(client->index);
+ panoramix_setup_ids(newWin, client, stuff->wid);
if (stuff->class == InputOnly)
stuff->visual = CopyFromParent;
@@ -663,9 +661,7 @@ int PanoramiXCreatePixmap(ClientPtr client)
newPix->type = XRT_PIXMAP;
newPix->u.pix.shared = FALSE;
- newPix->info[0].id = stuff->pid;
- for(j = 1; j < PanoramiXNumScreens; j++)
- newPix->info[j].id = FakeClientID(client->index);
+ panoramix_setup_ids(newPix, client, stuff->pid);
FOR_NSCREENS_BACKWARD(j) {
stuff->pid = newPix->info[j].id;
@@ -767,9 +763,7 @@ int PanoramiXCreateGC(ClientPtr client)
return BadAlloc;
newGC->type = XRT_GC;
- newGC->info[0].id = stuff->gc;
- for(j = 1; j < PanoramiXNumScreens; j++)
- newGC->info[j].id = FakeClientID(client->index);
+ panoramix_setup_ids(newGC, client, stuff->gc);
FOR_NSCREENS_BACKWARD(j) {
stuff->gc = newGC->info[j].id;
@@ -1334,7 +1328,7 @@ int PanoramiXPolyLine(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
npoint = bytes_to_int32((client->req_len << 2) - sizeof(xPolyLineReq));
if (npoint > 0){
origPts = malloc(npoint * sizeof(xPoint));
@@ -1394,7 +1388,7 @@ int PanoramiXPolySegment(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
nsegs = (client->req_len << 2) - sizeof(xPolySegmentReq);
if(nsegs & 4) return BadLength;
@@ -1457,7 +1451,7 @@ int PanoramiXPolyRectangle(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
nrects = (client->req_len << 2) - sizeof(xPolyRectangleReq);
if(nrects & 4) return BadLength;
@@ -1519,7 +1513,7 @@ int PanoramiXPolyArc(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
narcs = (client->req_len << 2) - sizeof(xPolyArcReq);
if(narcs % sizeof(xArc)) return BadLength;
@@ -1579,7 +1573,7 @@ int PanoramiXFillPoly(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
count = bytes_to_int32((client->req_len << 2) - sizeof(xFillPolyReq));
if (count > 0){
@@ -1640,7 +1634,7 @@ int PanoramiXPolyFillRectangle(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
things = (client->req_len << 2) - sizeof(xPolyFillRectangleReq);
if(things & 4) return BadLength;
@@ -1701,7 +1695,7 @@ int PanoramiXPolyFillArc(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
narcs = (client->req_len << 2) - sizeof(xPolyFillArcReq);
if (narcs % sizeof(xArc)) return BadLength;
@@ -1761,7 +1755,7 @@ int PanoramiXPutImage(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
orig_x = stuff->dstX;
orig_y = stuff->dstY;
@@ -1824,7 +1818,7 @@ int PanoramiXGetImage(ClientPtr client)
format = stuff->format;
planemask = stuff->planeMask;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
if(isRoot) {
if( /* check for being onscreen */
@@ -1846,7 +1840,7 @@ int PanoramiXGetImage(ClientPtr client)
}
drawables[0] = pDraw;
- for(i = 1; i < PanoramiXNumScreens; i++) {
+ FOR_NSCREENS_FORWARD_SKIP(i) {
rc = dixLookupDrawable(drawables+i, draw->info[i].id, client, 0,
DixGetAttrAccess);
if (rc != Success)
@@ -1962,7 +1956,7 @@ PanoramiXPolyText8(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
orig_x = stuff->x;
orig_y = stuff->y;
@@ -2003,7 +1997,7 @@ PanoramiXPolyText16(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
orig_x = stuff->x;
orig_y = stuff->y;
@@ -2044,7 +2038,7 @@ int PanoramiXImageText8(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
orig_x = stuff->x;
orig_y = stuff->y;
@@ -2085,7 +2079,7 @@ int PanoramiXImageText16(ClientPtr client)
if (result != Success)
return result;
- isRoot = (draw->type == XRT_WINDOW) && draw->u.win.root;
+ isRoot = IS_ROOT_DRAWABLE(draw);
orig_x = stuff->x;
orig_y = stuff->y;
@@ -2121,9 +2115,7 @@ int PanoramiXCreateColormap(ClientPtr client)
return BadAlloc;
newCmap->type = XRT_COLORMAP;
- newCmap->info[0].id = stuff->mid;
- for(j = 1; j < PanoramiXNumScreens; j++)
- newCmap->info[j].id = FakeClientID(client->index);
+ panoramix_setup_ids(newCmap, client, stuff->mid);
orig_visual = stuff->visual;
FOR_NSCREENS_BACKWARD(j){
@@ -2192,11 +2184,9 @@ PanoramiXCopyColormapAndFree(ClientPtr client)
return BadAlloc;
newCmap->type = XRT_COLORMAP;
- newCmap->info[0].id = stuff->mid;
- for(j = 1; j < PanoramiXNumScreens; j++)
- newCmap->info[j].id = FakeClientID(client->index);
+ panoramix_setup_ids(newCmap, client, stuff->mid);
- FOR_NSCREENS_BACKWARD(j){
+ FOR_NSCREENS_BACKWARD(j) {
stuff->srcCmap = cmap->info[j].id;
stuff->mid = newCmap->info[j].id;
result = (* SavedProcVector[X_CopyColormapAndFree])(client);
diff --git a/Xext/panoramiXsrv.h b/Xext/panoramiXsrv.h
index 9751feb54..6fc903b88 100644
--- a/Xext/panoramiXsrv.h
+++ b/Xext/panoramiXsrv.h
@@ -51,4 +51,15 @@ extern _X_EXPORT void XineramaGetImageData(
Bool isRoot
);
+static inline void panoramix_setup_ids(PanoramiXRes *resource,
+ ClientPtr client, XID base_id)
+{
+ int j;
+
+ resource->info[0].id = base_id;
+ FOR_NSCREENS_FORWARD_SKIP(j) {
+ resource->info[j].id = FakeClientID(client->index);
+ }
+}
+
#endif /* _PANORAMIXSRV_H_ */
diff --git a/Xext/shm.c b/Xext/shm.c
index 23afe6b1f..b08af821b 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -848,7 +848,7 @@ ProcPanoramiXShmGetImage(ClientPtr client)
return BadAlloc;
drawables[0] = pDraw;
- for(i = 1; i < PanoramiXNumScreens; i++) {
+ FOR_NSCREENS_FORWARD_SKIP(i) {
rc = dixLookupDrawable(drawables+i, draw->info[i].id, client, 0,
DixReadAccess);
if (rc != Success)
@@ -972,9 +972,7 @@ CreatePmap:
newPix->type = XRT_PIXMAP;
newPix->u.pix.shared = TRUE;
- newPix->info[0].id = stuff->pid;
- for(j = 1; j < PanoramiXNumScreens; j++)
- newPix->info[j].id = FakeClientID(client->index);
+ panoramix_setup_ids(newPix, client, stuff->pid);
result = Success;
diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index deddebd4b..b96843159 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -1918,7 +1918,7 @@ void XineramifyXv(void)
MatchingAdaptors[0] = refAdapt;
isOverlay = hasOverlay(refAdapt);
- for(j = 1; j < PanoramiXNumScreens; j++)
+ FOR_NSCREENS_FORWARD_SKIP(j)
MatchingAdaptors[j] = matchAdaptor(screenInfo.screens[j], refAdapt, isOverlay);
/* now create a resource for each port */
@@ -1927,7 +1927,7 @@ void XineramifyXv(void)
if(!port)
break;
- for(k = 0; k < PanoramiXNumScreens; k++) {
+ FOR_NSCREENS(k) {
if(MatchingAdaptors[k] && (MatchingAdaptors[k]->nPorts > j))
port->info[k].id = MatchingAdaptors[k]->base_id + j;
else