On Wed, Sep 14, 2011 at 10:20:24PM -0700, Chase Douglas wrote: > The GetReq Xlib macro uses string contatenation of request names to > assign structures and get the appropriate size block from the Xlib > buffer. This means we can't use GetReq with a different struct name than > the original XI 2.0 name. > > The only sane way around this seems to be to create a separate struct to > hold the new members of the extended request. Then, GetReqExtra can be > used to get a request set up correctly with extra room on the end for > the extended parameters.
I'd rather keep libXi hacks in the library, not in the protocol. see http://lists.x.org/archives/xorg-devel/2011-June/022841.html for an example of where I did this for the XIGrabDevice request. This is a different situation since the actual data isn't after variable data but I'm hoping that there's a solution for this case too. Cheers, Peter > Signed-off-by: Chase Douglas <[email protected]> > --- > XI2proto.h | 15 ++++++++++++--- > 1 files changed, 12 insertions(+), 3 deletions(-) > > diff --git a/XI2proto.h b/XI2proto.h > index 2460cf5..37304b9 100644 > --- a/XI2proto.h > +++ b/XI2proto.h > @@ -647,10 +647,19 @@ typedef struct { > uint16_t deviceid; > uint8_t mode; > uint8_t pad; > - uint32_t touch_id; /**< Since XI 2.2 */ > - Window grab_window; /**< Since XI 2.2 */ > } xXIAllowEventsReq; > -#define sz_xXIAllowEventsReq 20 /**< Was 12 before XI 2.2 > */ > +#define sz_xXIAllowEventsReq 12 > + > + > +/** > + * Allow or replay events on the specified grabbed device (XI 2.2 and on). > + */ > +typedef struct { > + xXIAllowEventsReq req_2_0; > + uint32_t touch_id; > + Window grab_window; > +} xXIAllowEventsReq_2_2; > +#define sz_xXIAllowEvents_2_2Req 20 > > > /** > -- > 1.7.4.1 > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
