This is potentially both a performance and client complexity improvement. Signed-off-by: Chase Douglas <chase.doug...@canonical.com> --- XI2proto.h | 3 ++- specs/XI2proto.txt | 26 +++++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/XI2proto.h b/XI2proto.h index 3315f1e..9e2c63c 100644 --- a/XI2proto.h +++ b/XI2proto.h @@ -648,8 +648,9 @@ typedef struct { 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 16 /**< Was 12 before XI 2.2 */ +#define sz_xXIAllowEventsReq 20 /**< Was 12 before XI 2.2 */ /** diff --git a/specs/XI2proto.txt b/specs/XI2proto.txt index 9bd586a..63e8bb3 100644 --- a/specs/XI2proto.txt +++ b/specs/XI2proto.txt @@ -1373,6 +1373,7 @@ active device grab becomes not viewable. ReplayDevice, AsyncPair, SyncPair, AcceptTouch*, RejectTouch* } touch_id*: CARD32 + grab_window*: Window └─── * since XI 2.2 @@ -1391,14 +1392,18 @@ ownership processing. touch_id The ID of the touch sequence to accept or reject. The value is undefined for event modes other than AcceptTouch and RejectTouch. + grab_window + The window on which to accept or reject a touch sequence grab. The value + is undefined for event modes other than AcceptTouch and RejectTouch. -The request has no effect if the specified time is earlier than the -last-grab time of the most recent active grab for the client, or if the -specified time is later than the current X server time. +For event modes other than AcceptTouch and RejectTouch, the request has no +effect if the specified time is earlier than the last-grab time of the most +recent active grab for the client, or if the specified time is later than the +current X server time. When event-mode is AcceptTouch or RejectTouch, a BadValue error occurs if the touch ID is invalid. A BadAccess error occurs if this client is not the current -owner of the specified touch ID. +or potential owner of the specified touch ID. The following describes the processing that occurs depending on what constant you pass to the event-mode argument: @@ -1470,13 +1475,16 @@ you pass to the event-mode argument: paired master device frozen by the client. AsyncPair has no effect if deviceid specifies a slave device. AcceptTouch - The client is deemed to have taken control of the touch sequence. - TouchEnd events will be sent to all other clients listening to the touch - sequence, and they will no longer receive any TouchUpdate events. + The client is deemed to have taken control of the touch sequence once it + owns the sequence. TouchEnd events will be sent to all clients listening + to the touch sequence that have either grabbed the touch sequence on a + child window of the grab_window or have received events for the touch + sequence through event selection. These clients will no longer receive + any TouchUpdate events. RejectTouch The client is no longer interested in the touch sequence, and will - receive a TouchEnd event. Ownership will be passed on to the next - listener. + receive a TouchEnd event. If the client is the current owner of the + sequence, ownership will be passed on to the next listener. [[requests-passivegrabdevice]] ┌─── -- 1.7.4.1 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel