r1455 - trunk/code/sdl
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Aug 22 18:16:44 EDT 2008
Author: tma
Date: 2008-08-22 18:16:37 -0400 (Fri, 22 Aug 2008)
New Revision: 1455
Modified:
trunk/code/sdl/sdl_glimp.c
trunk/code/sdl/sdl_input.c
Log:
* Don't set SE_KEY event to ctrl-h; I don't think this makes sense
* Don't warp the mouse on deactivation unless the cursor is in the window
already; this fixes in_nograb
* Stop grabbing the mouse in windowed mode when there is no sense in
doing so
* Make sure that IN_Restart is only called on r_fullscreen modification
if a mode change actually takes place
Modified: trunk/code/sdl/sdl_glimp.c
===================================================================
--- trunk/code/sdl/sdl_glimp.c 2008-08-22 11:41:54 UTC (rev 1454)
+++ trunk/code/sdl/sdl_glimp.c 2008-08-22 22:16:37 UTC (rev 1455)
@@ -725,18 +725,16 @@
if( r_fullscreen->modified )
{
qboolean fullscreen;
+ qboolean needToToggle = qtrue;
qboolean sdlToggled = qfalse;
SDL_Surface *s = SDL_GetVideoSurface( );
if( s )
{
// Find out the current state
- if( s->flags & SDL_FULLSCREEN )
- fullscreen = qtrue;
- else
- fullscreen = qfalse;
+ fullscreen = !!( s->flags & SDL_FULLSCREEN );
- if (r_fullscreen->integer && Cvar_VariableIntegerValue( "in_nograb" ))
+ if( r_fullscreen->integer && Cvar_VariableIntegerValue( "in_nograb" ) )
{
ri.Printf( PRINT_ALL, "Fullscreen not allowed with in_nograb 1\n");
ri.Cvar_Set( "r_fullscreen", "0" );
@@ -744,17 +742,20 @@
}
// Is the state we want different from the current state?
- if( !!r_fullscreen->integer != fullscreen )
+ needToToggle = !!r_fullscreen->integer != fullscreen;
+
+ if( needToToggle )
sdlToggled = SDL_WM_ToggleFullScreen( s );
- else
- sdlToggled = qtrue;
}
- // SDL_WM_ToggleFullScreen didn't work, so do it the slow way
- if( !sdlToggled )
- Cbuf_AddText( "vid_restart" );
+ if( needToToggle )
+ {
+ // SDL_WM_ToggleFullScreen didn't work, so do it the slow way
+ if( !sdlToggled )
+ Cbuf_AddText( "vid_restart" );
- IN_Restart( );
+ IN_Restart( );
+ }
r_fullscreen->modified = qfalse;
}
Modified: trunk/code/sdl/sdl_input.c
===================================================================
--- trunk/code/sdl/sdl_input.c 2008-08-22 11:41:54 UTC (rev 1454)
+++ trunk/code/sdl/sdl_input.c 2008-08-22 22:16:37 UTC (rev 1455)
@@ -58,9 +58,9 @@
static qboolean mouseActive = qfalse;
static qboolean keyRepeatEnabled = qfalse;
-static cvar_t *in_mouse;
+static cvar_t *in_mouse = NULL;
#ifdef MACOS_X_ACCELERATION_HACK
-static cvar_t *in_disablemacosxmouseaccel;
+static cvar_t *in_disablemacosxmouseaccel = NULL;
static double originalMouseSpeed = -1.0;
#endif
static cvar_t *in_nograb;
@@ -231,8 +231,7 @@
if( *key != K_DEL )
{
// ctrl-h
- *key = CTRL('h');
- *buf = *key;
+ *buf = CTRL('h');
break;
}
// fallthrough
@@ -393,8 +392,11 @@
if( mouseActive )
{
SDL_WM_GrabInput( SDL_GRAB_OFF );
- SDL_WarpMouse( glConfig.vidWidth / 2, glConfig.vidHeight / 2 );
+ // Don't warp the mouse unless the cursor is within the window
+ if( SDL_GetAppState( ) & SDL_APPMOUSEFOCUS )
+ SDL_WarpMouse( glConfig.vidWidth / 2, glConfig.vidHeight / 2 );
+
mouseActive = qfalse;
}
}
@@ -782,19 +784,33 @@
IN_Frame
===============
*/
-void IN_Frame (void)
+void IN_Frame( void )
{
+ qboolean loading;
+
IN_JoyMove( );
+ IN_ProcessEvents( );
- // Release the mouse if the console is down in windowed mode
- // or if the window loses focus due to task switching
- if( ( ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) && !r_fullscreen->integer ) ||
- !( SDL_GetAppState() & SDL_APPINPUTFOCUS ) )
+ // If not DISCONNECTED (main menu) or ACTIVE (in game), we're loading
+ loading = !!( cls.state != CA_DISCONNECTED && cls.state != CA_ACTIVE );
+
+ if( !r_fullscreen->integer && ( Key_GetCatcher( ) & KEYCATCH_CONSOLE ) )
+ {
+ // Console is down in windowed mode
IN_DeactivateMouse( );
+ }
+ else if( !r_fullscreen->integer && loading )
+ {
+ // Loading in windowed mode
+ IN_DeactivateMouse( );
+ }
+ else if( !( SDL_GetAppState() & SDL_APPINPUTFOCUS ) )
+ {
+ // Window not got focus
+ IN_DeactivateMouse( );
+ }
else
IN_ActivateMouse( );
-
- IN_ProcessEvents( );
}
/*
@@ -802,7 +818,7 @@
IN_Init
===============
*/
-void IN_Init(void)
+void IN_Init( void )
{
if( !SDL_WasInit( SDL_INIT_VIDEO ) )
{
@@ -810,24 +826,24 @@
return;
}
- Com_DPrintf ("\n------- Input Initialization -------\n");
+ Com_DPrintf( "\n------- Input Initialization -------\n" );
in_keyboardDebug = Cvar_Get( "in_keyboardDebug", "0", CVAR_ARCHIVE );
// mouse variables
- in_mouse = Cvar_Get ("in_mouse", "1", CVAR_ARCHIVE);
- in_nograb = Cvar_Get ("in_nograb", "0", CVAR_ARCHIVE);
+ in_mouse = Cvar_Get( "in_mouse", "1", CVAR_ARCHIVE );
+ in_nograb = Cvar_Get( "in_nograb", "0", CVAR_ARCHIVE );
- in_joystick = Cvar_Get ("in_joystick", "0", CVAR_ARCHIVE|CVAR_LATCH);
- in_joystickDebug = Cvar_Get ("in_joystickDebug", "0", CVAR_TEMP);
- in_joystickThreshold = Cvar_Get ("in_joystickThreshold", "0.15", CVAR_ARCHIVE);
+ in_joystick = Cvar_Get( "in_joystick", "0", CVAR_ARCHIVE|CVAR_LATCH );
+ in_joystickDebug = Cvar_Get( "in_joystickDebug", "0", CVAR_TEMP );
+ in_joystickThreshold = Cvar_Get( "in_joystickThreshold", "0.15", CVAR_ARCHIVE );
#ifdef MACOS_X_ACCELERATION_HACK
- in_disablemacosxmouseaccel = Cvar_Get ("in_disablemacosxmouseaccel", "1", CVAR_ARCHIVE);
+ in_disablemacosxmouseaccel = Cvar_Get( "in_disablemacosxmouseaccel", "1", CVAR_ARCHIVE );
#endif
- SDL_EnableUNICODE(1);
- SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
+ SDL_EnableUNICODE( 1 );
+ SDL_EnableKeyRepeat( SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL );
keyRepeatEnabled = qtrue;
if( in_mouse->value )
@@ -842,7 +858,7 @@
}
IN_InitJoystick( );
- Com_DPrintf ("------------------------------------\n");
+ Com_DPrintf( "------------------------------------\n" );
}
/*
More information about the quake3-commits
mailing list