[Patch] Evdev and acceleration

Peter Hutterer peter.hutterer at who-t.net
Mon Mar 22 23:10:54 PDT 2010


On Tue, Mar 16, 2010 at 04:59:47PM +0100, Simon Thum wrote:
> Hi,
> 
> the hack that is pointer acceleration's init parts bit me. Currently,
> this is done during driver calls into xf86InitValuatorDefaults(..., 0).
> But since I increased exposure to driver details by fiddling with the
> feedback class (see 032f97808c65771a07bac748212cf6457a5d1660), I managed
> to cut off evdev, which initializes the feedback class _after_ the
> valuators.
> 
> Net effect: Evdev devices can't have accel settings tuned using config
> fragments ATM. X.org 1.7 is unaffected.
> 
> I attached a small patch which brings evdev in line with others. Of
> course, the proper fix would be to make pointer accel's initialization
> sane. But that would require changes to many drivers, and I'm too
> swamped for that ATM.
> 
> Since the fix is unintrusive, I propose it as a tempoary solution. And I
> pledge to fix things later that year :)
> 

Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
can I have your signed-off though please?

Cheers,
  Peter
> From c935b1d8e5a49f22354d96c9863c4b73e9b9acf7 Mon Sep 17 00:00:00 2001
> From: Simon Thum <simon.thum at gmx.de>
> Date: Tue, 16 Mar 2010 16:00:21 +0100
> Subject: [PATCH] move feedback initialization up
> 
> This allows the backend to propery initialize the feedback from options,
> as it works with most other drivers. This is the hacky equivalent of
> fixing the initialization of pointer acceleration, which would require
> changes to most drivers.
> ---
>  src/evdev.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/src/evdev.c b/src/evdev.c
> index 3051462..63927db 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -1299,6 +1299,9 @@ EvdevAddRelClass(DeviceIntPtr device)
>                                         GetMotionHistorySize(), Relative))
>          return !Success;
>  
> +    if (!InitPtrFeedbackClassDeviceStruct(device, EvdevPtrCtrlProc))
> +        return !Success;
> +
>      for (axis = REL_X; axis <= REL_MAX; axis++)
>      {
>          int axnum = pEvdev->axis_map[axis];
> @@ -1315,9 +1318,6 @@ EvdevAddRelClass(DeviceIntPtr device)
>  
>      xfree(atoms);
>  
> -    if (!InitPtrFeedbackClassDeviceStruct(device, EvdevPtrCtrlProc))
> -        return !Success;
> -
>      pInfo->flags |= XI86_POINTER_CAPABLE;
>  
>      return Success;
> -- 
> 1.6.4.4
> 



More information about the xorg-devel mailing list