From 3e9f2abe794b5511e6f913f825c97fe639464c1b Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Mon, 6 Nov 2006 17:59:39 +0000 Subject: Center the mouse on startup to prevent abrupt turns when launching a game from the command line. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 746 --- src/i_video.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/i_video.c b/src/i_video.c index c45d3640..469b113d 100644 --- a/src/i_video.c +++ b/src/i_video.c @@ -439,6 +439,20 @@ void I_GetEvent(void) } } +// Warp the mouse back to the middle of the screen + +static void CenterMouse(void) +{ + // Warp the the screen center + + SDL_WarpMouse(screen->w / 2, screen->h / 2); + + // Clear any relative movement caused by warping + + SDL_PumpEvents(); + SDL_GetRelativeMouseState(NULL, NULL); +} + // // Read the change in mouse state to generate mouse motion events // @@ -464,9 +478,7 @@ static void I_ReadMouse(void) if (MouseShouldBeGrabbed()) { - SDL_WarpMouse(screen->w / 2, screen->h / 2); - SDL_PumpEvents(); - SDL_GetRelativeMouseState(NULL, NULL); + CenterMouse(); } } @@ -1150,9 +1162,10 @@ void I_InitGraphics(void) SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); - // clear out any events waiting at the start + // clear out any events waiting at the start and center the mouse while (SDL_PollEvent(&dummy)); + CenterMouse(); initialised = true; } -- cgit v1.2.3