summary refs log tree commit diff stats
path: root/hw/vmmouse.c
diff options
context:
space:
mode:
authorGerhard Wiesinger <lists@wiesinger.com>2012-01-25 21:04:14 +0100
committerAnthony Liguori <aliguori@us.ibm.com>2012-02-01 16:24:38 -0600
commit069ab0eb8a46bc4ff6f4d4d81bf037d3441347da (patch)
tree27a1fe492b88525fa3fbd51acd96cbef85028b92 /hw/vmmouse.c
parent93dd748b789202af4f5be75412c58ee1ed481b29 (diff)
downloadfocaccia-qemu-069ab0eb8a46bc4ff6f4d4d81bf037d3441347da.tar.gz
focaccia-qemu-069ab0eb8a46bc4ff6f4d4d81bf037d3441347da.zip
hw/vmmouse.c: Disable vmmouse after reboot
Bugfix after reboot when vmmouse was enabled and another OS which uses e.g. PS/2
mouse.

Details:
When a guest activated the vmmouse followed by a reboot the vmmouse was still
enabled and the PS/2 mouse was therefore unsusable. When another guest is then
booted without vmmouse support (e.g. PS/2 mouse) the mouse is not working.

Reason is that VMMouse has priority and disables all other mouse entities
and therefore must be disabled on reset.

Testscenario:
1.) Boot e.g. OS with VMMouse support (e.g. Windows with VMMouse tools)
2.) reboot
3.) Boot e.g. OS without VMMouse support (e.g. DOS) => PS/2 mouse doesn't work
     any more. Fixes that issue.

Testscenario 2 by Jan Kiszka <jan.kiszka@siemens.com>:
Confirm that this patch fixes a real issue. Setup: qemu.git,
opensuse 11.4 guest, SDL graphic, system_reset while guest is using the
vmmouse. Without the patch, the vmmouse become unusable after the
reboot. Also, the mouse stays in absolute mode even before X starts again.

Fixed by:
Disabling the vmmouse in its reset handler.

Tested-by: Andreas F=E4rber <afaerber@suse.de>
Signed-off-by: Gerhard Wiesinger <lists@wiesinger.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'hw/vmmouse.c')
-rw-r--r--hw/vmmouse.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/hw/vmmouse.c b/hw/vmmouse.c
index da2ea32dfb..5c80bc4f73 100644
--- a/hw/vmmouse.c
+++ b/hw/vmmouse.c
@@ -254,6 +254,8 @@ static void vmmouse_reset(DeviceState *d)
 
     s->status = 0xffff;
     s->queue_size = VMMOUSE_QUEUE_SIZE;
+
+    vmmouse_disable(s);
 }
 
 static int vmmouse_initfn(ISADevice *dev)