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

walter harms wharms at bfs.de
Sat Dec 10 04:45:13 PST 2011



Am 10.12.2011 08:54, schrieb Peter Hutterer:
> 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);
> +    }
> +
> +}
> +

is xaxis,yaxis always 0,1 ? then you could start with i=2
otherwise dev->last.valuators[i] would overwrite dev->last.valuators[0]
is that intended ?


just my two cents,
 wh


>  /**
>   * 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)) {


More information about the xorg-devel mailing list