X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=vid_sdl.c;h=5fd6230bc5f380007b764a94bb727229cadfc440;hb=e09ad7bab9b7037ef361b913a81b73c423b33bc2;hp=31e2f7aaa1582b0ff3e11800dbefc625dc0b0ada;hpb=058a0200acb4cc6e3f161da224f24a65f77f6675;p=xonotic%2Fdarkplaces.git diff --git a/vid_sdl.c b/vid_sdl.c index 31e2f7aa..5fd6230b 100644 --- a/vid_sdl.c +++ b/vid_sdl.c @@ -49,7 +49,8 @@ cvar_t joy_sensitivitypitch = {0, "joy_sensitivitypitch", "1", "movement multipl cvar_t joy_sensitivityyaw = {0, "joy_sensitivityyaw", "-1", "movement multiplier"}; cvar_t joy_sensitivityroll = {0, "joy_sensitivityroll", "1", "movement multiplier"}; -static qboolean vid_usingmouse; +static qboolean vid_usingmouse = false; +static qboolean vid_usinghidecursor = false; static qboolean vid_isfullscreen; static int vid_numjoysticks = 0; #define MAX_JOYSTICKS 8 @@ -232,29 +233,18 @@ static int MapKey( unsigned int sdlkey ) return tbl_sdltoquake[ sdlkey ]; } -void VID_GrabMouse(qboolean grab) +void VID_SetMouse(qboolean fullscreengrab, qboolean relative, qboolean hidecursor) { - //SDL_WM_GrabInput( SDL_GRAB_OFF ); - //Con_Printf("< Turning off input-grabbing. --blub\n"); - if (grab) + if (vid_usingmouse != relative) { - if (!vid_usingmouse) - { - vid_usingmouse = true; - cl_ignoremousemoves = 2; - SDL_WM_GrabInput( SDL_GRAB_ON ); - SDL_ShowCursor( SDL_DISABLE ); - } + vid_usingmouse = relative; + cl_ignoremousemoves = 2; + SDL_WM_GrabInput( relative ? SDL_GRAB_ON : SDL_GRAB_OFF ); } - else + if (vid_usinghidecursor != hidecursor) { - if (vid_usingmouse) - { - vid_usingmouse = false; - cl_ignoremousemoves = 2; - SDL_WM_GrabInput( SDL_GRAB_OFF ); - SDL_ShowCursor( SDL_ENABLE ); - } + vid_usinghidecursor = hidecursor; + SDL_ShowCursor( hidecursor ? SDL_DISABLE : SDL_ENABLE); } } @@ -276,7 +266,7 @@ void IN_Move( void ) static int old_x = 0, old_y = 0; static int stuck = 0; int x, y; - if (vid.mouseaim) + if (vid_usingmouse) { if(vid_stick_mouse.integer) { @@ -634,15 +624,15 @@ static void VID_OutputVersion() version->major, version->minor, version->patch ); } -int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate, int stereobuffer, int samples) +int VID_InitMode(int fullscreen, int *width, int *height, int bpp, int refreshrate, int stereobuffer, int samples) { int i; static int notfirstvideomode = false; int flags = SDL_OPENGL; const char *drivername; - win_half_width = width>>1; - win_half_height = height>>1; + win_half_width = *width>>1; + win_half_height = *height>>1; if(vid_resizable.integer) flags |= SDL_RESIZABLE; @@ -719,11 +709,11 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate video_bpp = bpp; video_flags = flags; VID_SetIcon(); - screen = SDL_SetVideoMode(width, height, bpp, flags); + screen = SDL_SetVideoMode(*width, *height, bpp, flags); if (screen == NULL) { - Con_Printf("Failed to set video mode to %ix%i: %s\n", width, height, SDL_GetError()); + Con_Printf("Failed to set video mode to %ix%i: %s\n", *width, *height, SDL_GetError()); VID_Shutdown(); return false; } @@ -763,6 +753,7 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate vid_hidden = false; vid_activewindow = false; vid_usingmouse = false; + vid_usinghidecursor = false; SDL_WM_GrabInput(SDL_GRAB_OFF); return true; @@ -770,7 +761,7 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate void VID_Shutdown (void) { - VID_GrabMouse(false); + VID_SetMouse(false, false, false); VID_RestoreSystemGamma(); SDL_QuitSubSystem(SDL_INIT_VIDEO); @@ -810,7 +801,7 @@ void VID_Finish (void) if (r_render.integer && !vid_hidden) { CHECKGLERROR - if (r_speeds.integer || gl_finish.integer) + if (r_speeds.integer == 2 || gl_finish.integer) { qglFinish();CHECKGLERROR }