panoramiX: consolidate common id assignment code.
This adds a new FOR_NSCREENS_FORWARD_SKIP, which skips the first element and is a common idiom throughout panoramiX code. It then adds a new inline function to hide id assignment to a panoramiX resource and cleans up lots of common repeated code. Signed-off-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
This commit is contained in:
parent
c48c530e54
commit
5a94934487
|
@ -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,6 +70,7 @@ 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)
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
@ -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,9 +2184,7 @@ 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){
|
||||
stuff->srcCmap = cmap->info[j].id;
|
||||
|
|
|
@ -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_ */
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -703,10 +703,7 @@ PanoramiXCompositeNameWindowPixmap (ClientPtr client)
|
|||
|
||||
newPix->type = XRT_PIXMAP;
|
||||
newPix->u.pix.shared = FALSE;
|
||||
newPix->info[0].id = stuff->pixmap;
|
||||
|
||||
for (i = 1; i < PanoramiXNumScreens; i++)
|
||||
newPix->info[i].id = FakeClientID (client->index);
|
||||
panoramix_setup_ids(newPix, client, stuff->pixmap);
|
||||
|
||||
FOR_NSCREENS(i) {
|
||||
rc = dixLookupResourceByType ((void **) &pWin, win->info[i].id,
|
||||
|
|
|
@ -2690,7 +2690,7 @@ PanoramiXRenderCreatePicture (ClientPtr client)
|
|||
if(!(newPict = (PanoramiXRes *) malloc(sizeof(PanoramiXRes))))
|
||||
return BadAlloc;
|
||||
newPict->type = XRT_PICTURE;
|
||||
newPict->info[0].id = stuff->pid;
|
||||
panoramix_setup_ids(newPict, client, stuff->pid);
|
||||
|
||||
if (refDraw->type == XRT_WINDOW &&
|
||||
stuff->drawable == screenInfo.screens[0]->root->drawable.id)
|
||||
|
@ -2699,9 +2699,6 @@ PanoramiXRenderCreatePicture (ClientPtr client)
|
|||
}
|
||||
else
|
||||
newPict->u.pict.root = FALSE;
|
||||
|
||||
for(j = 1; j < PanoramiXNumScreens; j++)
|
||||
newPict->info[j].id = FakeClientID(client->index);
|
||||
|
||||
FOR_NSCREENS_BACKWARD(j) {
|
||||
stuff->pid = newPict->info[j].id;
|
||||
|
@ -3225,11 +3222,8 @@ PanoramiXRenderCreateSolidFill (ClientPtr client)
|
|||
return BadAlloc;
|
||||
|
||||
newPict->type = XRT_PICTURE;
|
||||
newPict->info[0].id = stuff->pid;
|
||||
panoramix_setup_ids(newPict, client, stuff->pid);
|
||||
newPict->u.pict.root = FALSE;
|
||||
|
||||
for(j = 1; j < PanoramiXNumScreens; j++)
|
||||
newPict->info[j].id = FakeClientID(client->index);
|
||||
|
||||
FOR_NSCREENS_BACKWARD(j) {
|
||||
stuff->pid = newPict->info[j].id;
|
||||
|
@ -3258,12 +3252,9 @@ PanoramiXRenderCreateLinearGradient (ClientPtr client)
|
|||
return BadAlloc;
|
||||
|
||||
newPict->type = XRT_PICTURE;
|
||||
newPict->info[0].id = stuff->pid;
|
||||
panoramix_setup_ids(newPict, client, stuff->pid);
|
||||
newPict->u.pict.root = FALSE;
|
||||
|
||||
for(j = 1; j < PanoramiXNumScreens; j++)
|
||||
newPict->info[j].id = FakeClientID(client->index);
|
||||
|
||||
FOR_NSCREENS_BACKWARD(j) {
|
||||
stuff->pid = newPict->info[j].id;
|
||||
result = (*PanoramiXSaveRenderVector[X_RenderCreateLinearGradient]) (client);
|
||||
|
@ -3291,12 +3282,9 @@ PanoramiXRenderCreateRadialGradient (ClientPtr client)
|
|||
return BadAlloc;
|
||||
|
||||
newPict->type = XRT_PICTURE;
|
||||
newPict->info[0].id = stuff->pid;
|
||||
panoramix_setup_ids(newPict, client, stuff->pid);
|
||||
newPict->u.pict.root = FALSE;
|
||||
|
||||
for(j = 1; j < PanoramiXNumScreens; j++)
|
||||
newPict->info[j].id = FakeClientID(client->index);
|
||||
|
||||
FOR_NSCREENS_BACKWARD(j) {
|
||||
stuff->pid = newPict->info[j].id;
|
||||
result = (*PanoramiXSaveRenderVector[X_RenderCreateRadialGradient]) (client);
|
||||
|
@ -3324,12 +3312,9 @@ PanoramiXRenderCreateConicalGradient (ClientPtr client)
|
|||
return BadAlloc;
|
||||
|
||||
newPict->type = XRT_PICTURE;
|
||||
newPict->info[0].id = stuff->pid;
|
||||
panoramix_setup_ids(newPict, client, stuff->pid);
|
||||
newPict->u.pict.root = FALSE;
|
||||
|
||||
for(j = 1; j < PanoramiXNumScreens; j++)
|
||||
newPict->info[j].id = FakeClientID(client->index);
|
||||
|
||||
FOR_NSCREENS_BACKWARD(j) {
|
||||
stuff->pid = newPict->info[j].id;
|
||||
result = (*PanoramiXSaveRenderVector[X_RenderCreateConicalGradient]) (client);
|
||||
|
|
Loading…
Reference in New Issue
Block a user