mirror of https://github.com/xqemu/xqemu.git
milkymist: softmmu: fix event handling
Keys which send more than one scancode (esp. windows key) weren't handled
correctly since commit 1ff5eedd
. Two events were put into the input event
queue but only one was processed. This fixes this by fetching all pending
events in the callback handler.
Signed-off-by: Michael Walle <michael@walle.cc>
Cc: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
ab0302ee76
commit
857cccac0d
|
@ -194,10 +194,13 @@ static void softusb_kbd_hid_datain(HIDState *hs)
|
|||
return;
|
||||
}
|
||||
|
||||
len = hid_keyboard_poll(hs, s->kbd_hid_buffer, sizeof(s->kbd_hid_buffer));
|
||||
while (hid_has_events(hs)) {
|
||||
len = hid_keyboard_poll(hs, s->kbd_hid_buffer,
|
||||
sizeof(s->kbd_hid_buffer));
|
||||
|
||||
if (len == 8) {
|
||||
softusb_kbd_changed(s);
|
||||
if (len == 8) {
|
||||
softusb_kbd_changed(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -212,11 +215,13 @@ static void softusb_mouse_hid_datain(HIDState *hs)
|
|||
return;
|
||||
}
|
||||
|
||||
len = hid_pointer_poll(hs, s->mouse_hid_buffer,
|
||||
sizeof(s->mouse_hid_buffer));
|
||||
while (hid_has_events(hs)) {
|
||||
len = hid_pointer_poll(hs, s->mouse_hid_buffer,
|
||||
sizeof(s->mouse_hid_buffer));
|
||||
|
||||
if (len == 4) {
|
||||
softusb_mouse_changed(s);
|
||||
if (len == 4) {
|
||||
softusb_mouse_changed(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue