Restore hardware gamma on exit.

This commit is contained in:
Jeff Teunissen 2001-05-20 00:56:09 +00:00
parent f834f99de7
commit 2fa09aa68a
2 changed files with 26 additions and 10 deletions

View file

@ -34,7 +34,7 @@
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include <X11/Xutil.h> #include <X11/Xutil.h>
#include "QF/qtypes.h" #include <QF/qtypes.h>
extern Display *x_disp; extern Display *x_disp;
extern Visual *x_vis; extern Visual *x_vis;
@ -63,10 +63,11 @@ void X11_Init_Cvars (void);
void X11_OpenDisplay (void); void X11_OpenDisplay (void);
void X11_ProcessEvent (void); void X11_ProcessEvent (void);
void X11_ProcessEvents (void); void X11_ProcessEvents (void);
void X11_RestoreGamma (void);
void X11_RestoreScreenSaver (void);
void X11_RestoreVidMode (void); void X11_RestoreVidMode (void);
void X11_SetCaption (char *); void X11_SetCaption (char *);
void X11_SetVidMode (int, int);
void X11_SetScreenSaver (void); void X11_SetScreenSaver (void);
void X11_RestoreScreenSaver (void); void X11_SetVidMode (int, int);
#endif // __context_x11_h_ #endif // __context_x11_h_

View file

@ -5,8 +5,7 @@
Copyright (C) 1996-1997 Id Software, Inc. Copyright (C) 1996-1997 Id Software, Inc.
Copyright (C) 2000 Zephaniah E. Hull <warp@whitestar.soark.net> Copyright (C) 2000 Zephaniah E. Hull <warp@whitestar.soark.net>
Copyright (C) 1999,2000 contributors of the QuakeForge project Copyright (C) 2000, 2001 Jeff Teunissen <deek@quakeforge.net>
Please see the file "AUTHORS" for a list of contributors
This program is free software; you can redistribute it and/or This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License modify it under the terms of the GNU General Public License
@ -319,23 +318,24 @@ X11_SetVidMode (int width, int height)
#endif #endif
} }
void X11_UpdateFullscreen (cvar_t *v_fs) void X11_UpdateFullscreen (cvar_t *fullscreen)
{ {
if (!vid_context_created) { if (!vid_context_created) {
return; return;
} }
if (v_fs->int_val==0) {
if (!fullscreen->int_val) {
if (_windowed_mouse) { if (_windowed_mouse) {
_windowed_mouse->flags &= ~CVAR_ROM; _windowed_mouse->flags &= ~CVAR_ROM;
} }
X11_RestoreVidMode(); X11_RestoreVidMode ();
} else { } else {
if (_windowed_mouse) { if (_windowed_mouse) {
_windowed_mouse->flags &= ~CVAR_ROM; _windowed_mouse->flags &= ~CVAR_ROM;
Cvar_Set (_windowed_mouse, "1"); Cvar_Set (_windowed_mouse, "1");
_windowed_mouse->flags |= CVAR_ROM; _windowed_mouse->flags |= CVAR_ROM;
} }
X11_SetVidMode(scr_width,scr_height); X11_SetVidMode (scr_width, scr_height);
} }
} }
@ -428,7 +428,7 @@ X11_RestoreVidMode (void)
#ifdef HAVE_VIDMODE #ifdef HAVE_VIDMODE
if (vidmode_active) { if (vidmode_active) {
X11_RestoreScreenSaver (); X11_RestoreScreenSaver ();
X11_SetGamma (x_gamma); X11_RestoreGamma ();
XF86VidModeSwitchToMode (x_disp, x_screen, vidmodes[original_mode]); XF86VidModeSwitchToMode (x_disp, x_screen, vidmodes[original_mode]);
XFree (vidmodes); XFree (vidmodes);
vidmode_active=false; vidmode_active=false;
@ -519,6 +519,21 @@ X11_SetGamma (double gamma)
return false; return false;
} }
void
X11_RestoreGamma (void)
{
#ifdef HAVE_VIDMODE
# ifdef X_XF86VidModeSetGamma
XF86VidModeGamma xgamma;
if (vid_gamma_avail) {
xgamma.red = xgamma.green = xgamma.blue = (float) x_gamma;
XF86VidModeSetGamma (x_disp, x_screen, &xgamma);
}
# endif
#endif
}
void void
X11_SetScreenSaver (void) X11_SetScreenSaver (void)
{ {