diff -ur ioquake3-orig/code/sdl/sdl_glimp.c ioquake3/code/sdl/sdl_glimp.c --- ioquake3-orig/code/sdl/sdl_glimp.c 2012-01-10 19:52:16.920254556 +0000 +++ ioquake3/code/sdl/sdl_glimp.c 2012-01-10 19:56:16.685249315 +0000 @@ -250,7 +250,15 @@ ri.Printf (PRINT_ALL, "...setting mode %d:", mode ); - if ( !R_GetModeInfo( &glConfig.vidWidth, &glConfig.vidHeight, &glConfig.windowAspect, mode ) ) + if (mode == -2) + { + glConfig.vidWidth = videoInfo->current_w; + glConfig.vidHeight = videoInfo->current_h; + glConfig.windowAspect = displayAspect; + fullscreen = qtrue; + noborder = qtrue; + } + else if ( !R_GetModeInfo( &glConfig.vidWidth, &glConfig.vidHeight, &glConfig.windowAspect, mode ) ) { ri.Printf( PRINT_ALL, " invalid mode\n" ); return RSERR_INVALID_MODE; @@ -475,6 +483,14 @@ fullscreen = qfalse; } + if (!fullscreen && mode == -2) + { + ri.Printf( PRINT_ALL, "Windowed not allowed with r_mode -2\n"); + ri.Cvar_Set( "r_fullscreen", "1" ); + r_fullscreen->modified = qfalse; + fullscreen = qtrue; + } + err = GLimp_SetMode(mode, fullscreen, noborder); switch ( err )