From: Marc-André Lureau <[email protected]> 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 <[email protected]> --- hw/i386/vmmouse.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c index fce13a5cde..cd9ac11afc 100644 --- a/hw/i386/vmmouse.c +++ b/hw/i386/vmmouse.c @@ -46,6 +46,11 @@ #define VMMOUSE_VERSION 0x3442554a +#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) @@ -106,8 +111,12 @@ static void vmmouse_mouse_event(void *opaque, int x, int y, int dz, int buttons_ buttons |= 0x08; 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); } s->queue[s->nb_queue++] = buttons; -- 2.41.0
