summaryrefslogtreecommitdiff
path: root/hw/input
diff options
context:
space:
mode:
authorVolker RĂ¼melin <vr_qemu@t-online.de>2021-05-25 20:14:30 +0200
committerGerd Hoffmann <kraxel@redhat.com>2021-05-26 11:27:16 +0200
commit76968101f549fb6bb51b4bdea65e8a48307c765d (patch)
tree0de94a6b7b316c401e494745fad88fcbe824c114 /hw/input
parent644f66bf5d09f98d1da7a6bcec6bd9ce795f868c (diff)
downloadqemu-76968101f549fb6bb51b4bdea65e8a48307c765d.zip
ps2: fix mouse stream corruption
Commit 7abe7eb294 "ps2: Fix mouse stream corruption due to lost data" added code to avoid mouse stream corruptions but the calculation of the needed free queue size was wrong. Fix this. To reproduce, open a text file with the vim 7.3 32 bit for DOS exe- cutable in a FreeDOS client started with -display sdl and move the mouse around for a few seconds. You will quickly see erratic mouse movements and unexpected mouse clicks. CuteMouse (ctmouse.exe) in FreeDOS doesn't try to re-sync the mouse stream. Fixes: 7abe7eb294 ("ps2: Fix mouse stream corruption due to lost data") Signed-off-by: Volker RĂ¼melin <vr_qemu@t-online.de> Message-Id: <20210525181441.27768-1-vr_qemu@t-online.de> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/input')
-rw-r--r--hw/input/ps2.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/input/ps2.c b/hw/input/ps2.c
index 5352e417a4..7a3fb2b9f6 100644
--- a/hw/input/ps2.c
+++ b/hw/input/ps2.c
@@ -646,7 +646,8 @@ void ps2_keyboard_set_translation(void *opaque, int mode)
static int ps2_mouse_send_packet(PS2MouseState *s)
{
- const int needed = 3 + (s->mouse_type - 2);
+ /* IMPS/2 and IMEX send 4 bytes, PS2 sends 3 bytes */
+ const int needed = s->mouse_type ? 4 : 3;
unsigned int b;
int dx1, dy1, dz1;