From 6d0e8c4900736d2269e549f3ecc30ffbb619af11 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 6 Dec 2008 17:50:50 +0000 Subject: [PATCH] Date: Sat, 06 Dec 2008 15:27:00 +0100 From: Couriersud Subject: SDL: Relative mouse movements The patch below will reenable processing of relative mouse movements. The DirectFB drivers generates those in "grabbed" mode. These ensure, that even in fullscreen mode relative movements are reported. SDLMAME depends on this for games with trackballs. Looking at the code I ask myself whether relative movements should be handled in the drivers (x11, directfb). Both x11 and directfb are able to report relative movements. This would leave it to the driver to use the most appropriate method for relative movements when at the border of a fullscreen window or being "grabbed". --- src/events/SDL_mouse.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 1d8a6d378..445803440 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -433,9 +433,15 @@ SDL_SendMouseMotion(int id, int relative, int x, int y, int pressure) } /* the relative motion is calculated regarding the system cursor last position */ - - xrel = x - last_x; - yrel = y - last_y; + if (relative) { + xrel = x; + yrel = y; + x = (last_x + x); + y = (last_y + y); + } else { + xrel = x - last_x; + yrel = y - last_y; + } /* Drop events that don't change state */ if (!xrel && !yrel) {