On Tue, 2009-07-28 at 21:53 -0700, Aaron Plattner wrote: > @@ -1,7 +1,7 @@ > The XFIXES Extension > - Version 4.0 > - Document Revision 1 > - 2006-12-14 > + Version 5.0 > + Document Revision 2 > + 2009-07-27
Document revision should go back to 0 for the new major version. > Keith Packard > [email protected] > > @@ -29,6 +29,8 @@ developers, in particular, > > + Deron Johnson for cursor visibility > > + + Valery Moya for X screen origin queries So, the first question is why this is in XFixes and not in RandR -- should it go there instead? > +X configurator programs may want to know the relative positions of X screens > in > +a multiple screen layout. This configuration is described in the > ServerLayout > +section of xorg.conf and affects how the cursor moves from screen to screen > when > +it hits screen edges. Configuration programs need to know this information > so > +they can display it to users and build configuration files from the current > +screen layout. Is there some reason this doesn't also allow this data to be changed at run-time? From what I can see, that should be trivial and would eliminate yet another 'must restart' case in the X server. > +/*************** Version 5.0 ******************/ > + > +typedef struct { > + CARD8 reqType; > + CARD8 xfixesReqType; > + CARD16 length B16; > +} xXFixesGetScreenLayoutReq; > + > +#define sz_xXFixesGetScreenLayoutReq sizeof(xXFixesGetScreenLayoutReq) > + > +typedef struct { > + BYTE type; /* X_Reply */ > + BYTE pad1; > + CARD16 sequenceNumber B16; > + CARD32 length B32; > + CARD32 pad2 B32; > + CARD32 pad3 B32; > + CARD32 pad4 B32; > + CARD32 pad5 B32; > + CARD32 pad6 B32; > + CARD32 pad7 B32; > + xXFixesScreenLayoutRec screens[]; > +} xXFixesGetScreenLayoutReply; > + > +#define sz_xXFixesGetScreenLayoutReply sizeof(xXFixesGetScreenLayoutReply) You have to use an explicit size (no sizeof(foo)) for every request I'm afraid -- and you can't use xXFixesScreenLayoutRec in the structure, that's not portable C. Looks like there are other errors of this type in the file. The reason for explicit sizes is that some requests are *not* a multiple of 64-bits long, and so sizeof will give the wrong answer. Of course, I encourage you to make all requests a multiple of 64-bits so that Xlib doesn't have to insert Noops to align the output buffer. > + > #undef Region > #undef Picture > #undef Window > diff --git a/xfixeswire.h b/xfixeswire.h > index 6f20270..c8c0ca1 100644 > --- a/xfixeswire.h > +++ b/xfixeswire.h > @@ -2,6 +2,7 @@ > * $XFree86: xc/include/extensions/xfixeswire.h,v 1.1 2002/11/30 06:21:43 > keithp Exp $ > * > * Copyright 2006 Sun Microsystems > + * Copyright 2009 NVIDIA Corporation > * > * Permission to use, copy, modify, distribute, and sell this software and > its > * documentation for any purpose is hereby granted without fee, provided that > @@ -47,9 +48,11 @@ > #define _XFIXESWIRE_H_ > > #define XFIXES_NAME "XFIXES" > -#define XFIXES_MAJOR 4 > +#define XFIXES_MAJOR 5 > #define XFIXES_MINOR 0 > > +#include <X11/Xmd.h> What is Xmd.h required for here? And how did it work without this before? > +typedef struct { > + CARD32 x B32; > + CARD32 y B32; > + CARD16 positionType B16; > + CARD16 refScreen B16; > +} xXFixesScreenLayoutRec; You'll probably want to make this a multiple of 64 bits long, and then also provide a sz_xXFixesScreenLayoutRec for the Xlib code to use. Also, the tradition has been to use minimal datatypes for each object, so positionType should probably be a CARD8. You'll then need to place explicit padding entries to ensure that everything sits on a natural boundary and that the whole structure is a multiple of 64 bits long. -- [email protected]
signature.asc
Description: This is a digitally signed message part
_______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
