Make mouse relative mode save the original co-ordinates to restore them

properly.
This commit is contained in:
Wim Looman 2012-02-04 00:13:21 +13:00
parent b7f2ad8ad0
commit 0925c1dd78
2 changed files with 8 additions and 2 deletions

View File

@ -323,9 +323,13 @@ SDL_SetRelativeMouseMode(SDL_bool enabled)
/* Set the relative mode */
mouse->relative_mode = enabled;
if (!enabled && mouse->focus) {
if (enabled) {
/* Save the expected mouse position */
mouse->original_x = mouse->x;
mouse->original_y = mouse->y;
} else if (mouse->focus) {
/* Restore the expected mouse position */
SDL_WarpMouseInWindow(mouse->focus, mouse->x, mouse->y);
SDL_WarpMouseInWindow(mouse->focus, mouse->original_x, mouse->original_y);
}
/* Flush pending mouse motion */

View File

@ -60,6 +60,8 @@ typedef struct
int last_x, last_y; /* the last reported x and y coordinates */
Uint8 buttonstate;
SDL_bool relative_mode;
/* the x and y coordinates when relative mode was activated */
int original_x, original_y;
SDL_Cursor *cursors;
SDL_Cursor *def_cursor;