[PATCH 17/19] xfree86: Fix xf86 backend-specific input initialization

Simon Thum simon.thum at gmx.de
Sat Aug 7 02:04:08 PDT 2010


Am 30.07.2010 08:21, schrieb Peter Hutterer:
> From: Simon Thum <simon.thum at gmx.de>
> 
> Instead of shoving it in rather unrelated places, move acceleration init
> into xf86NewInputDevice.
> 
> Caveat: It's not clear atm how relevant other callers of ActivateDevice
> (like OpenDevice) actually are.
Seems like I hit the nail on the head here :)

Since the followup patch removes those hooks, you may want to remove the
caveat as well.


> 
> Signed-off-by: Simon Thum <simon.thum at gmx.de>
I guess s-o-b tops r-b, so just keep that.

> Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
>  hw/xfree86/common/xf86Xinput.c |   27 ++++++++++++++++++++++++---
>  1 files changed, 24 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
> index a6b0b58..ea82638 100644
> --- a/hw/xfree86/common/xf86Xinput.c
> +++ b/hw/xfree86/common/xf86Xinput.c
> @@ -93,6 +93,9 @@
>  
>  EventListPtr xf86Events = NULL;
>  
> +static int
> +xf86InputDevicePostInit(DeviceIntPtr dev);
> +
>  /**
>   * Eval config and modify DeviceVelocityRec accordingly
>   */
> @@ -782,6 +785,19 @@ xf86DeleteInput(InputInfoPtr pInp, int flags)
>      free(pInp);
>  }
>  
> +/*
> + * Apply backend-specific initialization. Invoked after ActiveteDevice(),
> + * i.e. after the driver successfully completed DEVICE_INIT and the device
> + * is advertised.
> + * @param dev the device
> + * @return Success or an error code
> + */
> +static int
> +xf86InputDevicePostInit(DeviceIntPtr dev) {
> +    ApplyAccelerationSettings(dev);
> +    return Success;
> +}
> +
>  /**
>   * Create a new input device, activate and enable it.
>   *
> @@ -851,6 +867,14 @@ xf86NewInputDevice(IDevPtr idev, DeviceIntPtr *pdev, BOOL enable)
>          goto unwind;
>      }
>  
> +    rval = xf86InputDevicePostInit(dev);
> +    if (rval != Success)
> +    {
> +	xf86Msg(X_ERROR, "Couldn't post-init device \"%s\"\n", idev->identifier);
> +	RemoveDevice(dev, TRUE);
> +	goto unwind;
> +    }
> +
>      /* Enable it if it's properly initialised and we're currently in the VT */
>      if (enable && dev->inited && dev->startup && xf86Screens[0]->vtSema)
>      {
> @@ -1361,9 +1385,6 @@ xf86InitValuatorDefaults(DeviceIntPtr dev, int axnum)
>  	dev->valuator->axisVal[1] = screenInfo.screens[0]->height / 2;
>          dev->last.valuators[1] = dev->valuator->axisVal[1];
>      }
> -
> -    if(axnum == 0)  /* to prevent double invocation */
> -	ApplyAccelerationSettings(dev);
>  }
>  
>  



More information about the xorg-devel mailing list