[PATCH 3/5] dix: move storing last.valuators into a helper function
Peter Hutterer
peter.hutterer at who-t.net
Sat Dec 10 18:57:48 PST 2011
On Sat, Dec 10, 2011 at 01:45:13PM +0100, walter harms wrote:
>
>
> 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 ?
the whole reason for this patch is that with touch events, the x/y axes may
be different. See also patches 1/5 and 2/5.
Cheers,
Peter
>
> > /**
> > * 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