[PATCH 3/5] dix: move storing last.valuators into a helper function

Chase Douglas chase.douglas at canonical.com
Tue Dec 13 09:36:56 PST 2011


On 12/09/2011 11:54 PM, Peter Hutterer wrote:
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
>  dix/getevents.c |   38 ++++++++++++++++++++++++++------------
>  1 files changed, 26 insertions(+), 12 deletions(-)
> 
> diff --git a/dix/getevents.c b/dix/getevents.c
> index bc532ca..3b3194d 100644
> --- a/dix/getevents.c
> +++ b/dix/getevents.c
> @@ -1099,6 +1099,30 @@ transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask)
>          valuator_mask_set_double(mask, 1, y);
>  }
>  
> +static void
> +storeLastValuators(DeviceIntPtr dev, ValuatorMask *mask,
> +                   int xaxis, int yaxis,
> +                   double devx, double devy)
> +{
> +    int i;
> +
> +    /* store desktop-wide in last.valuators */
> +    if (valuator_mask_isset(mask, xaxis))
> +        dev->last.valuators[0] = devx;
> +    if (valuator_mask_isset(mask, yaxis))
> +        dev->last.valuators[1] = devy;
> +
> +    for (i = 0; i < valuator_mask_size(mask); i++)
> +    {
> +        if (i == xaxis || i == yaxis)
> +            continue;
> +
> +        if (valuator_mask_isset(mask, i))
> +            dev->last.valuators[i] = valuator_mask_get_double(mask, i);
> +    }
> +
> +}
> +
>  /**
>   * Generate internal events representing this pointer event and enqueue them
>   * on the event queue.
> @@ -1167,7 +1191,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type,
>                      int buttons, CARD32 ms, int flags,
>                      const ValuatorMask *mask_in)
>  {
> -    int num_events = 1, i;
> +    int num_events = 1;
>      DeviceEvent *event;
>      RawDeviceEvent *raw;
>      double screenx = 0.0, screeny = 0.0; /* desktop coordinate system */
> @@ -1242,17 +1266,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type,
>  
>      clipValuators(pDev, &mask);
>  
> -    /* store desktop-wide in last.valuators */
> -    if (valuator_mask_isset(&mask, 0))
> -        pDev->last.valuators[0] = devx;
> -    if (valuator_mask_isset(&mask, 1))
> -        pDev->last.valuators[1] = devy;
> -
> -    for (i = 2; i < valuator_mask_size(&mask); i++)
> -    {
> -        if (valuator_mask_isset(&mask, i))
> -            pDev->last.valuators[i] = valuator_mask_get_double(&mask, i);
> -    }
> +    storeLastValuators(pDev, &mask, 0, 1, devx, devy);
>  
>      /* Update the MD's co-ordinates, which are always in desktop space. */
>      if (!IsMaster(pDev) || !IsFloating(pDev)) {

Peter mentioned on IRC that this was still a relevant patch even without
the axis number changes. The new helper function should lose the axis
number parameters, but other than that it is good. Either way:

Reviewed-by: Chase Douglas <chase.douglas at canonical.com>


More information about the xorg-devel mailing list