diff options
author | Keith Packard <keithp@keithp.com> | 2011-03-23 13:38:37 +0900 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2011-03-23 13:38:37 +0900 |
commit | 03f45df93469f6aef391e97007b9614e0770cc4c (patch) | |
tree | 3cfde05ac25184ebdf70c66a51baf8019c69977e /Xext | |
parent | efcb7275ce5de651f91ba4ff8bb227dfb68bb154 (diff) | |
parent | 5fb329a04a18835ce864d0563f6dfeb3d3c78d69 (diff) |
Merge remote-tracking branch 'airlied/xinerama-cleanup'
Diffstat (limited to 'Xext')
-rw-r--r-- | Xext/panoramiX.c | 16 | ||||
-rw-r--r-- | Xext/panoramiX.h | 4 | ||||
-rw-r--r-- | Xext/panoramiXprocs.c | 50 | ||||
-rw-r--r-- | Xext/panoramiXsrv.h | 11 | ||||
-rw-r--r-- | Xext/shm.c | 6 | ||||
-rw-r--r-- | Xext/xvdisp.c | 4 |
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 |