2010/8/17 Peter Hutterer <[email protected]>:
> Devices that send motion events with valuators other than x/y get core
> motion events with unchanged x/y coordinates. This confuses some
> applications.
>
> If the DeviceEvent does not have the x/y valuators set, return BadMatch on
> core conversion, thus skipping the event altogether.
>
> Reported-by: Bartosz Brachaczek <[email protected]>
> Signed-off-by: Peter Hutterer <[email protected]>
> ---
>  dix/eventconvert.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/dix/eventconvert.c b/dix/eventconvert.c
> index 4e3de0b..0f747c1 100644
> --- a/dix/eventconvert.c
> +++ b/dix/eventconvert.c
> @@ -102,6 +102,15 @@ EventToCore(InternalEvent *event, xEvent *core)
>     switch(event->any.type)
>     {
>         case ET_Motion:
> +            {
> +                DeviceEvent *e = &event->device_event;
> +                /* Don't create core motion event if neither x nor y are
> +                 * present */
> +                if (!BitIsOn(e->valuators.mask, 0) &&
> +                    !BitIsOn(e->valuators.mask, 1))
> +                    return BadMatch;
> +            }
> +            /* fallthrough */
>         case ET_ButtonPress:
>         case ET_ButtonRelease:
>         case ET_KeyPress:
> --
> 1.7.2.1
>
>

Tested-by: Bartosz Brachaczek <[email protected]>

This fixes the issue for me. Thanks a lot!
_______________________________________________
[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