aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2023-08-01 13:35:43 +0400
committerMarc-André Lureau <marcandre.lureau@redhat.com>2023-09-12 10:37:02 +0400
commit67a6fcb2b06846dd37296bb901ad93a0cd87ee67 (patch)
tree535c0ac41018b2faa120ff039c7b556a01da3ef2
parent885f380f7bec732b3615d2698e493fab617d46de (diff)
vmmouse: use explicit code
It's weird to shift x & y without obvious reason. Let's make this more explicit and future-proof. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
-rw-r--r--hw/i386/vmmouse.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
index 99b84a3817..91320afa2f 100644
--- a/hw/i386/vmmouse.c
+++ b/hw/i386/vmmouse.c
@@ -52,6 +52,11 @@
#define VMMOUSE_RIGHT_BUTTON 0x10
#define VMMOUSE_MIDDLE_BUTTON 0x08
+#define VMMOUSE_MIN_X 0
+#define VMMOUSE_MIN_Y 0
+#define VMMOUSE_MAX_X 0xFFFF
+#define VMMOUSE_MAX_Y 0xFFFF
+
#define TYPE_VMMOUSE "vmmouse"
OBJECT_DECLARE_SIMPLE_TYPE(VMMouseState, VMMOUSE)
@@ -112,8 +117,12 @@ static void vmmouse_mouse_event(void *opaque, int x, int y, int dz, int buttons_
buttons |= VMMOUSE_MIDDLE_BUTTON;
if (s->absolute) {
- x <<= 1;
- y <<= 1;
+ x = qemu_input_scale_axis(x,
+ INPUT_EVENT_ABS_MIN, INPUT_EVENT_ABS_MAX,
+ VMMOUSE_MIN_X, VMMOUSE_MAX_X);
+ y = qemu_input_scale_axis(y,
+ INPUT_EVENT_ABS_MIN, INPUT_EVENT_ABS_MAX,
+ VMMOUSE_MIN_Y, VMMOUSE_MAX_Y);
} else{
/* add for guest vmmouse driver to judge this is a relative packet. */
buttons |= VMMOUSE_RELATIVE_PACKET;