[quake3-commits] r1594 - in trunk: . code/sdl

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Mon Sep 14 18:07:34 EDT 2009


Author: icculus
Date: 2009-09-14 18:07:34 -0400 (Mon, 14 Sep 2009)
New Revision: 1594

Modified:
   trunk/README
   trunk/code/sdl/sdl_glimp.c
   trunk/code/sdl/sdl_input.c
Log:
Allow optional window resizing.

  Fixes Bugzilla #2844.


Modified: trunk/README
===================================================================
--- trunk/README	2009-09-14 21:08:08 UTC (rev 1593)
+++ trunk/README	2009-09-14 22:07:34 UTC (rev 1594)
@@ -159,6 +159,7 @@
                                       ipv6 servers on the local network
   net_mcastiface                    - outgoing interface to use for scan
 
+  r_allowResize                     - make window resizable (SDL only)
   r_zProj                           - distance of observer camera to projection
                                       plane in quake3 standard units
   r_greyscale                       - render black and white images

Modified: trunk/code/sdl/sdl_glimp.c
===================================================================
--- trunk/code/sdl/sdl_glimp.c	2009-09-14 21:08:08 UTC (rev 1593)
+++ trunk/code/sdl/sdl_glimp.c	2009-09-14 22:07:34 UTC (rev 1594)
@@ -79,6 +79,7 @@
 static const SDL_VideoInfo *videoInfo = NULL;
 
 cvar_t *r_allowSoftwareGL; // Don't abort out if a hardware visual can't be obtained
+cvar_t *r_allowResize; // make window resizable
 cvar_t *r_sdlDriver;
 
 void (APIENTRYP qglActiveTextureARB) (GLenum texture);
@@ -215,6 +216,9 @@
 
 	ri.Printf( PRINT_ALL, "Initializing OpenGL display\n");
 
+	if ( r_allowResize->integer )
+		flags |= SDL_RESIZABLE;
+
 #if !SDL_VERSION_ATLEAST(1, 2, 10)
 	// 1.2.10 is needed to get the desktop resolution
 	displayAspect = 4.0f / 3.0f;
@@ -667,6 +671,7 @@
 {
 	r_allowSoftwareGL = ri.Cvar_Get( "r_allowSoftwareGL", "0", CVAR_LATCH );
 	r_sdlDriver = ri.Cvar_Get( "r_sdlDriver", "", CVAR_ROM );
+	r_allowResize = ri.Cvar_Get( "r_allowResize", "0", CVAR_ARCHIVE );
 
 	Sys_GLimpInit( );
 

Modified: trunk/code/sdl/sdl_input.c
===================================================================
--- trunk/code/sdl/sdl_input.c	2009-09-14 21:08:08 UTC (rev 1593)
+++ trunk/code/sdl/sdl_input.c	2009-09-14 22:07:34 UTC (rev 1594)
@@ -70,6 +70,8 @@
 static cvar_t *in_joystickThreshold = NULL;
 static cvar_t *in_joystickNo        = NULL;
 
+static int vidRestartTime = 0;
+
 #define CTRL(a) ((a)-'a'+1)
 
 /*
@@ -901,6 +903,21 @@
 				Sys_Quit( );
 				break;
 
+			case SDL_VIDEORESIZE:
+			{
+				char width[32], height[32];
+				Com_sprintf( width, sizeof(width), "%d", e.resize.w );
+				Com_sprintf( height, sizeof(height), "%d", e.resize.h );
+				ri.Cvar_Set( "r_customwidth", width );
+				ri.Cvar_Set( "r_customheight", height );
+				ri.Cvar_Set( "r_mode", "-1" );
+				/* wait until user stops dragging for 1 second, so
+				   we aren't constantly recreating the GL context while
+				   he tries to drag...*/
+				vidRestartTime = Sys_Milliseconds() + 1000;
+			}
+			break;
+
 			default:
 				break;
 		}
@@ -939,6 +956,13 @@
 	}
 	else
 		IN_ActivateMouse( );
+
+	/* in case we had to delay actual restart of video system... */
+	if ( (vidRestartTime != 0) && (vidRestartTime < Sys_Milliseconds()) )
+	{
+		vidRestartTime = 0;
+		Cbuf_AddText( "vid_restart" );
+	}
 }
 
 /*



More information about the quake3-commits mailing list