[PATCH] Revert "dix: use the event mask of the grab for TryClientEvents."

Keith Packard keithp at keithp.com
Thu Jun 24 17:18:46 PDT 2010

On Fri, 25 Jun 2010 09:48:10 +1000, Peter Hutterer <peter.hutterer at who-t.net> wrote:

> Behaviour of earlier X servers was to deliver the ButtonPress event
> unconditionally, regardless of the actual event mask being set. Thus, a
> GrabButton event will always deliver the button press event, a GrabKey
> always the key press event, etc. Same goes for XI and XI2.

The earlier X server implementation agrees with my reading of the spec
in which the GrabButton request definition says:

"This request establishes a passive grab.  In the future, the pointer is
 actively grabbed as described in GrabPointer, the last-pointer-grab
 time is set to the time at which the button was pressed (as transmitted
 in the ButtonPress event), and the ButtonPress event is reported if all
 of the following conditions are true:"

The ButtonPress event is unconditionally "reported". Reading other areas
of the X protocol spec, it seems clear that "reported" means delivered
to a client, not just generated internally within the server and passed
through the normal event checks later on, in particular, the definition
of the window 'event-mask' says:

"Multiple clients can select input on the same window; their event-masks
 are disjoint.  When an event is generated, it will be reported to all
 interested clients.  However, only one client at a time can select for
 SubstructureRedirect, only one client at a time can select for
 ResizeRedirect, and only one client at a time can select for
 ButtonPress.  An attempt to violate these restrictions results in an
 Access error."

In this case, "reported" clearly means delivered to a client. So, if we
interpret the GrabButton usage of "reported" in the same way, then the
event should be delivered unconditionally.

> XTS test results for XGrabButton are identical with and without this
> patch.

Sure would be nice to have a test case which checks this behaviour...

> This reverts commit 48585bd1e3e98db0f3df1ecc68022510216e00cc.
> Conflicts:
> 	dix/events.c
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

Reviewed-by: Keith Packard <keithp at keithp.com>

keith.packard at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100624/58edaea6/attachment-0001.pgp>

More information about the xorg-devel mailing list