diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2011-07-08 13:19:01 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2011-07-22 13:36:31 +0200 |
commit | e7e73892a66dd3850eb723ee2ef9ef3f4569529f (patch) | |
tree | de4c1a658f20a71ba8e343f30892d1a8e269d6f5 /hw/usb-hid.c | |
parent | d1afc48b7cfdb4490f322d5d82a2aae6d545ec06 (diff) | |
download | qemu-e7e73892a66dd3850eb723ee2ef9ef3f4569529f.zip qemu-e7e73892a66dd3850eb723ee2ef9ef3f4569529f.tar.gz qemu-e7e73892a66dd3850eb723ee2ef9ef3f4569529f.tar.bz2 |
usb-hid: fixup changed tracking.
Remove leftover calls to usb_hid_changed().
Take care to update the changed flag after delivering a event via
GET_REPORT like we do when sending events via interrupt endpoint.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/usb-hid.c')
-rw-r--r-- | hw/usb-hid.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/hw/usb-hid.c b/hw/usb-hid.c index d711b5c..b812da2 100644 --- a/hw/usb-hid.c +++ b/hw/usb-hid.c @@ -531,18 +531,15 @@ static void usb_keyboard_process_keycode(USBHIDState *hs) case 0xe0: if (s->modifiers & (1 << 9)) { s->modifiers ^= 3 << 8; - usb_hid_changed(hs); return; } case 0xe1 ... 0xe7: if (keycode & (1 << 7)) { s->modifiers &= ~(1 << (hid_code & 0x0f)); - usb_hid_changed(hs); return; } case 0xe8 ... 0xef: s->modifiers |= 1 << (hid_code & 0x0f); - usb_hid_changed(hs); return; } @@ -769,10 +766,12 @@ static int usb_hid_handle_control(USBDevice *dev, USBPacket *p, } break; case GET_REPORT: - if (s->kind == USB_MOUSE || s->kind == USB_TABLET) + if (s->kind == USB_MOUSE || s->kind == USB_TABLET) { ret = usb_pointer_poll(s, data, length); - else if (s->kind == USB_KEYBOARD) + } else if (s->kind == USB_KEYBOARD) { ret = usb_keyboard_poll(s, data, length); + } + s->changed = s->n > 0; break; case SET_REPORT: if (s->kind == USB_KEYBOARD) |