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

Reply via email to