[PATCH] evdev: Set all valuators for relative motion events (#24737)

Peter Hutterer peter.hutterer at who-t.net
Wed Nov 18 16:17:46 PST 2009


On Thu, Nov 12, 2009 at 03:18:10PM +0100, Bartosz Brachaczek wrote:
> We should process all the deltas reported by a relative motion device,
> otherwise some devices such as A4Tech X-750F or similar may trigger a
> situation when the `v` array contains random values (it isn't
> initialized anywhere) and later we process them and in effect the mouse
> cursor "jumps" on the screen.
> I'm not sure why, but we also must be sure that the `first` and `last`
> variables reflect the axis map, otherwise the mouse cursor "jumps" on
> the screen when clicking mouse buttons in some rare cases reported by
> Bartek Iwaniec on Bugzilla. That's why a simple initialization of the
> `v` array with zeros isn't sufficient.
> 
> X.Org Bug 24737 <http://bugs.freedesktop.org/show_bug.cgi?id=24737>
> 
> Signed-off-by: Bartosz Brachaczek <b.brachaczek at gmail.com>
> ---
>  src/evdev.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/src/evdev.c b/src/evdev.c
> index 06ea83b..81a0bd5 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -375,7 +375,7 @@ EvdevProcessValuators(InputInfoPtr pInfo, int
> v[MAX_VALUATORS], int *num_v,
>          for (i = 0; i < REL_CNT; i++)
>          {
>              int map = pEvdev->axis_map[i];
> -            if (pEvdev->delta[i] && map != -1)
> +            if (map != -1)
>              {
>                  v[map] = pEvdev->delta[i];
>                  if (map < first)
> -- 

pushed, thanks for the patch!

Cheers,
  Peter



More information about the xorg mailing list