]> xenbits.xensource.com Git - qemu-xen-3.3-testing.git/commitdiff
usb-hid.c: fix usb mouse wheel
authorIan Jackson <ian.jackson@eu.citrix.com>
Thu, 11 Dec 2008 18:04:47 +0000 (18:04 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Thu, 12 Feb 2009 11:14:11 +0000 (11:14 +0000)
This patch fixes the usb mouse wheel of usb devices.

[ Previously, tablets would fail to subtract dz from e->dz thus
  producing an infinite stream of reports; also the wheel direction
  inversions had been multipled by merge damage resulting in the wrong
  number of inversions for mice. -iwj ]

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
(cherry picked from commit 70543c9952d2ff9f6fddb0a0948218e8e6f2dacb)

hw/usb-hid.c

index 89fa3d57e275c37a99ebb1aa9eadb3a841d9fcca..6aa26f9b074114424b299d3a4dacd6e4e3708a03 100644 (file)
@@ -552,6 +552,7 @@ static int usb_pointer_poll(USBHIDState *hs, uint8_t *buf, int len)
 
     dz = int_clamp(e->dz, -127, 127);
 
+    e->dz -= dz;
     if (s->xyrel) {
         dx = int_clamp(e->xdx, -127, 127);
         dy = int_clamp(e->ydy, -127, 127);
@@ -592,9 +593,6 @@ static int usb_pointer_poll(USBHIDState *hs, uint8_t *buf, int len)
        break;
 
     case USB_TABLET:
-       /* Appears we have to invert the wheel direction */
-       dz = 0 - dz;
-
        buf[0] = b;
        buf[1] = dx & 0xff;
        buf[2] = dx >> 8;