[PATCH 2/2] Add support for per-axis valuator modes (Relative/Absolute)

Chase Douglas chase.douglas at canonical.com
Wed Jul 28 05:29:11 PDT 2010


On Wed, 2010-07-28 at 14:55 +1000, Peter Hutterer wrote:
> On Fri, Jul 16, 2010 at 09:21:19AM -0400, Chase Douglas wrote:
> > @@ -309,6 +315,12 @@ countValuators(DeviceEvent *ev, int *first)
> >  
> >      for (i = 0; i < sizeof(ev->valuators.mask) * 8; i++)
> >      {
> > +        /* Assume mode of 0th valuator matches XI1 device mode. Stop when the
> > +         * event mode changes since XI1 can't handle mixed mode devices.
> > +         */
> 
> why is this assumption necessary? valuator->mode still stores what the XI1
> device mode is.
> 
> > +        if (ev->valuators.mode[i] != ev->valuators.mode[0])
> > +            break;
> > +
> >          if (BitIsOn(ev->valuators.mask, i))
> >          {
> >              if (first_valuator == -1)

In this function we no longer have a pointer to the input device. The
closest thing we have is ev->deviceid, which then we could use to loop
over inputInfo.devices to find the device and then figure out what its
XI1 device mode is. That just seems like a lot of work when we have the
value there in the event itself.

That said, I'm fine with implementing the approach above if that's what
you think is best.

Thanks,

-- Chase



More information about the xorg-devel mailing list