From: Dmitry Torokhov on
Hi Daniel,

On Wed, May 19, 2010 at 07:22:36PM +0200, Daniel Mack wrote:
> joydev->corr[i].type = JS_CORR_BROKEN;
> - joydev->corr[i].prec = dev->absfuzz[j];
> - joydev->corr[i].coef[0] =
> - (dev->absmax[j] + dev->absmin[j]) / 2 - dev->absflat[j];
> - joydev->corr[i].coef[1] =
> - (dev->absmax[j] + dev->absmin[j]) / 2 + dev->absflat[j];
> + joydev->corr[i].prec = input_abs_fuzz(dev, j);
> +
> + t = (input_abs_max(dev, j) + input_abs_min(dev, j)) / 2
> + - input_abs_flat(dev, j);
> + joydev->corr[i].coef[0] = t;
> + joydev->corr[i].coef[1] = t;

FYI: this is not equivalent transformation - note that original code
either added or subtracted flat from the average to get coefficient.

> @@ -128,17 +129,20 @@ static void mousedev_touchpad_event(struct input_dev *dev,
> struct mousedev *mousedev,
> unsigned int code, int value)
> {
> - int size, tmp;
> enum { FRACTION_DENOM = 128 };
> + int tmp;
> +
> + /* use X size for ABS_Y to keep the same scale */
> + int size = input_abs_max(dev, ABS_X) - input_abs_min(dev, ABS_X);
> +
> + if (size == 0)
> + size = 256 * 2;
>
> switch (code) {
>
> case ABS_X:
> fx(0) = value;
> if (mousedev->touch && mousedev->pkt_count >= 2) {
> - size = dev->absmax[ABS_X] - dev->absmin[ABS_X];
> - if (size == 0)
> - size = 256 * 2;
> tmp = ((value - fx(2)) * 256 * FRACTION_DENOM) / size;
> tmp += mousedev->frac_dx;
> mousedev->packet.dx = tmp / FRACTION_DENOM;
> @@ -150,10 +154,6 @@ static void mousedev_touchpad_event(struct input_dev *dev,
> case ABS_Y:
> fy(0) = value;
> if (mousedev->touch && mousedev->pkt_count >= 2) {
> - /* use X size to keep the same scale */
> - size = dev->absmax[ABS_X] - dev->absmin[ABS_X];
> - if (size == 0)
> - size = 256 * 2;

The reason we had the repeating code blocks is that we don't do
calculations for events we are not interested in. This especially
important for multitouch devices generating lots of data.

I think I will keep it the way it was.

No need to resubmit, I am working on the patches...

Thanks.

--
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/