while( SDL_PollEvent( &event ) )
switch( event.type ) {
case SDL_QUIT:
- Sys_Quit();
+ Sys_Quit(0);
break;
case SDL_KEYDOWN:
case SDL_KEYUP:
}
// enable/disable sound on focus gain/loss
- if (!vid_activewindow && sound_active)
+ if (!vid_hidden && (vid_activewindow || !snd_mutewhenidle.integer))
{
- S_BlockSound ();
- sound_active = false;
+ if (!sound_active)
+ {
+ S_UnblockSound ();
+ sound_active = true;
+ }
}
- else if (vid_activewindow && !sound_active)
+ else
{
- S_UnblockSound ();
- sound_active = true;
+ if (sound_active)
+ {
+ S_BlockSound ();
+ sound_active = false;
+ }
}
}
version->major, version->minor, version->patch );
}
-int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate)
+int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate, int stereobuffer)
{
int i;
+ static int notfirstvideomode = false;
int flags = SDL_OPENGL;
const char *drivername;
We cant switch from one OpenGL video mode to another.
Thus we first switch to some stupid 2D mode and then back to OpenGL.
*/
- SDL_SetVideoMode( 0, 0, 0, 0 );
+ if (notfirstvideomode)
+ SDL_SetVideoMode( 0, 0, 0, 0 );
+ notfirstvideomode = true;
// SDL usually knows best
drivername = NULL;
SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, 1);
SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 16);
}
+ if (stereobuffer)
+ SDL_GL_SetAttribute (SDL_GL_STEREO, 1);
screen = SDL_SetVideoMode(width, height, bpp, flags);
if (screen == NULL)
void VID_Shutdown (void)
{
+ // this is needed to retry gamma after a vid_restart
+ VID_RestoreSystemGamma();
+
IN_Activate(false);
SDL_QuitSubSystem(SDL_INIT_VIDEO);
}