Hi Peter, Ok, I'll make the changes requested as soon as I can (hopefully today) and send out another patch.
-- Oliver. On Thu, 2009-10-08 at 05:05 +0200, ext Peter Hutterer wrote: > On Mon, Aug 03, 2009 at 02:31:02AM +0300, [email protected] wrote: > > From: Oliver McFadden <[email protected]> > > > > Originally based on a patch from Daniel Stone, this commit allows for > > the calibration factors to be set either from Xorg.conf or via HAL. > > > > Previously the only way was via the properties interface. > > --- > > src/evdev.c | 51 ++++++++++++++++++++++++++++++--------------------- > > 1 files changed, 30 insertions(+), 21 deletions(-) > > > > diff --git a/src/evdev.c b/src/evdev.c > > index 7ea2ef7..5cc290a 100644 > > --- a/src/evdev.c > > +++ b/src/evdev.c > > @@ -1868,12 +1868,32 @@ EvdevProbe(InputInfoPtr pInfo) > > return 0; > > } > > > > +static void > > +EvdevSetCalibration(InputInfoPtr pInfo, int num_calibration, int > > calibration[4]) > > +{ > > + EvdevPtr pEvdev = pInfo->private; > > + > > + if (num_calibration == 0) { > > + pEvdev->flags &= ~EVDEV_CALIBRATED; > > + pEvdev->calibration.min_x = 0; > > + pEvdev->calibration.max_x = 0; > > + pEvdev->calibration.min_y = 0; > > + pEvdev->calibration.max_y = 0; > > + } else if (num_calibration == 4) { > > + pEvdev->flags |= EVDEV_CALIBRATED; > > + pEvdev->calibration.min_x = calibration[0]; > > + pEvdev->calibration.max_x = calibration[1]; > > + pEvdev->calibration.min_y = calibration[2]; > > + pEvdev->calibration.max_y = calibration[3]; > > + } > > +} > > > > static InputInfoPtr > > EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags) > > { > > InputInfoPtr pInfo; > > - const char *device; > > + const char *device, *str; > > + int num_calibration = 0, calibration[4] = { 0, 0, 0, 0 }; > > EvdevPtr pEvdev; > > > > if (!(pInfo = xf86AllocateInput(drv, 0))) > > @@ -1946,6 +1966,14 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int > > flags) > > pEvdev->invert_y = xf86SetBoolOption(pInfo->options, "InvertY", FALSE); > > pEvdev->swap_axes = xf86SetBoolOption(pInfo->options, "SwapAxes", > > FALSE); > > > > + str = xf86CheckStrOption(pInfo->options, "Calibration", NULL); > > + if (str) { > > + num_calibration = sscanf(str, "%d %d %d %d", > > + &calibration[0], &calibration[1], > > + &calibration[2], &calibration[3]); > > + EvdevSetCalibration(pInfo, num_calibration, calibration); > > There should be an error message if num_calibration != 4, and better only > call EvdevSetCalibration if num_calibration is 4, it's more readable - even > though the same check exists inside the function again. > > > + } > > + > > /* Grabbing the event device stops in-kernel event forwarding. In other > > words, it disables rfkill and the "Macintosh mouse button > > emulation". > > Note that this needs a server that sets the console to RAW mode. */ > > @@ -2419,27 +2447,8 @@ EvdevSetProperty(DeviceIntPtr dev, Atom atom, > > XIPropertyValuePtr val, > > return BadMatch; > > if (val->size != 4 && val->size != 0) > > return BadMatch; > > - > > if (!checkonly) > > - { > > - if (val->size == 0) > > - { > > - pEvdev->flags &= ~EVDEV_CALIBRATED; > > - pEvdev->calibration.min_x = 0; > > - pEvdev->calibration.max_x = 0; > > - pEvdev->calibration.min_y = 0; > > - pEvdev->calibration.max_y = 0; > > - } else if (val->size == 4) > > - { > > - CARD32 *vals = (CARD32*)val->data; > > - > > - pEvdev->flags |= EVDEV_CALIBRATED; > > - pEvdev->calibration.min_x = vals[0]; > > - pEvdev->calibration.max_x = vals[1]; > > - pEvdev->calibration.min_y = vals[2]; > > - pEvdev->calibration.max_y = vals[3]; > > - } > > - } > > + EvdevSetCalibration(pInfo, val->size, val->data); > > } else if (atom == prop_swap) > > { > > if (val->format != 8 || val->type != XA_INTEGER || val->size != 1) > > -- > > 1.6.1 > > man page addition is missing. Other than that, I'm fine with it. > > Cheers, > Peter _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
