On 12/09/2011 11:54 PM, Peter Hutterer wrote: > Signed-off-by: Peter Hutterer <[email protected]> > --- > 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 <[email protected]> _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
