* [Qemu-devel] [PATCH 1/2] input: sdl2: Fix guest_cursor logic
2014-04-01 20:37 [Qemu-devel] [PATCH 0/2] sdl2: Fix relative mouse mode Cole Robinson
@ 2014-04-01 20:37 ` Cole Robinson
2014-04-01 20:37 ` [Qemu-devel] [RFC PATCH 2/2] input: sdl2: Fix relative mode to match SDL1 behavior Cole Robinson
1 sibling, 0 replies; 3+ messages in thread
From: Cole Robinson @ 2014-04-01 20:37 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann, Cole Robinson
Unbreaks relative mouse mode with sdl2, just like was done with sdl.c
in c3aa84b6.
Signed-off-by: Cole Robinson <crobinso@redhat.com>
---
ui/sdl2.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/ui/sdl2.c b/ui/sdl2.c
index f1532e9..e4cb9fb 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -403,13 +403,17 @@ static void sdl_send_mouse_event(struct sdl2_state *scon, int dx, int dy,
}
qemu_input_queue_abs(scon->dcl.con, INPUT_AXIS_X, off_x + x, max_w);
qemu_input_queue_abs(scon->dcl.con, INPUT_AXIS_Y, off_y + y, max_h);
- } else if (guest_cursor) {
- x -= guest_x;
- y -= guest_y;
- guest_x += x;
- guest_y += y;
- qemu_input_queue_rel(scon->dcl.con, INPUT_AXIS_X, x);
- qemu_input_queue_rel(scon->dcl.con, INPUT_AXIS_Y, y);
+ } else {
+ if (guest_cursor) {
+ x -= guest_x;
+ y -= guest_y;
+ guest_x += x;
+ guest_y += y;
+ dx = x;
+ dy = y;
+ }
+ qemu_input_queue_rel(scon->dcl.con, INPUT_AXIS_X, dx);
+ qemu_input_queue_rel(scon->dcl.con, INPUT_AXIS_Y, dy);
}
qemu_input_event_sync();
}
--
1.9.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Qemu-devel] [RFC PATCH 2/2] input: sdl2: Fix relative mode to match SDL1 behavior
2014-04-01 20:37 [Qemu-devel] [PATCH 0/2] sdl2: Fix relative mouse mode Cole Robinson
2014-04-01 20:37 ` [Qemu-devel] [PATCH 1/2] input: sdl2: Fix guest_cursor logic Cole Robinson
@ 2014-04-01 20:37 ` Cole Robinson
1 sibling, 0 replies; 3+ messages in thread
From: Cole Robinson @ 2014-04-01 20:37 UTC (permalink / raw)
To: qemu-devel; +Cc: Gerd Hoffmann, Cole Robinson
Right now relative mode accelerates too fast, and has the 'invisible wall'
problem. SDL2 added an explicit API to handle this use case, so let's use
it.
Signed-off-by: Cole Robinson <crobinso@redhat.com>
---
While this fixes things for me, I'm not positive it doesn't have other
side effects. I didn't test transition from relative mode to absolute
mode and back, which might hit issues.
ui/sdl2.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/ui/sdl2.c b/ui/sdl2.c
index e4cb9fb..7506e2e 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -278,7 +278,7 @@ static void sdl_hide_cursor(void)
SDL_ShowCursor(1);
SDL_SetCursor(sdl_cursor_hidden);
} else {
- SDL_ShowCursor(0);
+ SDL_SetRelativeMouseMode(SDL_TRUE);
}
}
@@ -289,6 +289,7 @@ static void sdl_show_cursor(void)
}
if (!qemu_input_is_absolute()) {
+ SDL_SetRelativeMouseMode(SDL_FALSE);
SDL_ShowCursor(1);
if (guest_cursor &&
(gui_grab || qemu_input_is_absolute() || absolute_enabled)) {
--
1.9.0
^ permalink raw reply related [flat|nested] 3+ messages in thread