Skip to content

Commit

Permalink
Allow optional window resizing.
Browse files Browse the repository at this point in the history
  Fixes Bugzilla #2844.
  • Loading branch information
icculus committed Sep 14, 2009
1 parent 8bb2f9a commit b096ca1
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 0 deletions.
1 change: 1 addition & 0 deletions README
Expand Up @@ -159,6 +159,7 @@ New cvars
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
Expand Down
5 changes: 5 additions & 0 deletions code/sdl/sdl_glimp.c
Expand Up @@ -79,6 +79,7 @@ static SDL_Surface *screen = NULL;
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);
Expand Down Expand Up @@ -215,6 +216,9 @@ static int GLimp_SetMode( int mode, qboolean fullscreen )

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;
Expand Down Expand Up @@ -667,6 +671,7 @@ void GLimp_Init( void )
{
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( );

Expand Down
24 changes: 24 additions & 0 deletions code/sdl/sdl_input.c
Expand Up @@ -70,6 +70,8 @@ static cvar_t *in_joystickDebug = NULL;
static cvar_t *in_joystickThreshold = NULL;
static cvar_t *in_joystickNo = NULL;

static int vidRestartTime = 0;

#define CTRL(a) ((a)-'a'+1)

/*
Expand Down Expand Up @@ -901,6 +903,21 @@ static void IN_ProcessEvents( void )
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;
}
Expand Down Expand Up @@ -939,6 +956,13 @@ void IN_Frame( void )
}
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" );
}
}

/*
Expand Down

0 comments on commit b096ca1

Please sign in to comment.