[PATCH] Added confine protocol.

Peter Hutterer peter.hutterer at who-t.net
Sun May 8 19:36:22 PDT 2011


On Thu, May 05, 2011 at 04:04:58PM +0200, Philipp Reh wrote:
> ---
>  XI2proto.h |   83 ++++++++++++++++++++++++++++++++++++++++++++---------------
>  1 files changed, 62 insertions(+), 21 deletions(-)
> 
> diff --git a/XI2proto.h b/XI2proto.h
> index 84574a5..5ded2f3 100644
> --- a/XI2proto.h
> +++ b/XI2proto.h
> @@ -71,27 +71,29 @@
>  /**
>   * XI2 Request opcodes
>   */
> -#define X_XIQueryPointer                40
> -#define X_XIWarpPointer                 41
> -#define X_XIChangeCursor                42
> -#define X_XIChangeHierarchy             43
> -#define X_XISetClientPointer            44
> -#define X_XIGetClientPointer            45
> -#define X_XISelectEvents                46
> -#define X_XIQueryVersion                47
> -#define X_XIQueryDevice                 48
> -#define X_XISetFocus                    49
> -#define X_XIGetFocus                    50
> -#define X_XIGrabDevice                  51
> -#define X_XIUngrabDevice                52
> -#define X_XIAllowEvents                 53
> -#define X_XIPassiveGrabDevice           54
> -#define X_XIPassiveUngrabDevice         55
> -#define X_XIListProperties              56
> -#define X_XIChangeProperty              57
> -#define X_XIDeleteProperty              58
> -#define X_XIGetProperty                 59
> -#define X_XIGetSelectedEvents           60
> +#define X_XIQueryPointer                 40
> +#define X_XIWarpPointer                  41
> +#define X_XIChangeCursor                 42
> +#define X_XIChangeHierarchy              43
> +#define X_XISetClientPointer             44
> +#define X_XIGetClientPointer             45
> +#define X_XISelectEvents                 46
> +#define X_XIQueryVersion                 47
> +#define X_XIQueryDevice                  48
> +#define X_XISetFocus                     49
> +#define X_XIGetFocus                     50
> +#define X_XIGrabDevice                   51
> +#define X_XIUngrabDevice                 52
> +#define X_XIAllowEvents                  53
> +#define X_XIPassiveGrabDevice            54
> +#define X_XIPassiveUngrabDevice          55
> +#define X_XIListProperties               56
> +#define X_XIChangeProperty               57
> +#define X_XIDeleteProperty               58
> +#define X_XIGetProperty                  59
> +#define X_XIGetSelectedEvents            60
> +#define X_XIGrabDeviceWithConfine        61
> +#define X_XIPassiveGrabDeviceWithConfine 62

Do we really need a new protocol request here?
any reason we can't tack on the extra 4 bytes to the original request and
handle it based on protocol support by the client?

A more extensive commit messager would be a appreciated too to explain _why_
the confine_to is necessary. You've already told me on IRC but things like
this need to be in writing for the next person. 
Missing from this patch is also the matching updates in the XI2proto.txt
protocol specification (and the comments which version this was added, etc.)

Cheers,
  Peter

>  
>  /** Number of XI requests */
>  #define XI2REQUESTS (X_XIGetSelectedEvents - X_XIQueryPointer + 1)
> @@ -569,6 +571,25 @@ typedef struct {
>  } xXIGrabDeviceReq;
>  #define sz_xXIGrabDeviceReq                     24
>  
> +typedef struct {
> +    uint8_t     reqType;
> +    uint8_t     ReqType;                /**< Always ::X_XIGrabDeviceWithConfine */
> +    uint16_t    length;                 /**< Length in 4 byte units */
> +    Window      grab_window;
> +    Window      confine_to;
> +    Time        time;
> +    Cursor      cursor;
> +    uint16_t    deviceid;
> +    uint8_t     grab_mode;
> +    uint8_t     paired_device_mode;
> +    uint8_t     owner_events;
> +    uint8_t     pad;
> +    uint16_t    mask_len;
> +} xXIGrabDeviceWithConfineReq;
> +
> +#define sz_xXIGrabDeviceWithConfineReq          28
> +
> +
>  /**
>   * Return codes from a XIPassiveGrabDevice request.
>   */
> @@ -648,6 +669,26 @@ typedef struct {
>  #define sz_xXIPassiveGrabDeviceReq              32
>  
>  typedef struct {
> +    uint8_t     reqType;
> +    uint8_t     ReqType;                /**< Always ::X_XIPassiveGrabDeviceWithConfine */
> +    uint16_t    length;                 /**< Length in 4 byte units */
> +    Time        time;
> +    Window      grab_window;
> +    Window      confine_to;
> +    Cursor      cursor;
> +    uint32_t    detail;
> +    uint16_t    deviceid;
> +    uint16_t    num_modifiers;
> +    uint16_t    mask_len;
> +    uint8_t     grab_type;
> +    uint8_t     grab_mode;
> +    uint8_t     paired_device_mode;
> +    uint8_t     owner_events;
> +    uint16_t    pad1;
> +} xXIPassiveGrabDeviceWithConfineReq;
> +#define sz_xXIPassiveGrabDeviceWithConfineReq   36
> +
> +typedef struct {
>      uint8_t     repType;                /**< Input extension major opcode */
>      uint8_t     RepType;                /**< Always ::X_XIPassiveGrabDevice */
>      uint16_t    sequenceNumber;
> -- 
> 1.7.5.rc3


More information about the xorg-devel mailing list