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. 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
