mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-26 05:41:52 +00:00
vid_width/vid_height/vid_bpp 0 will use default desktop settings, added vid_desktopsettings which uses default width/height/bpp/refresh rate, command line -current maps to vid_desktopsettings 1
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2208 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
68a5e9d3b3
commit
ceafd30644
10 changed files with 112 additions and 8 deletions
|
@ -3324,6 +3324,9 @@ void Host_Init (quakeparms_t *parms)
|
||||||
if ((i = COM_CheckParm ("-bpp")))
|
if ((i = COM_CheckParm ("-bpp")))
|
||||||
Cvar_Set(Cvar_FindVar("vid_bpp"), com_argv[i+1]);
|
Cvar_Set(Cvar_FindVar("vid_bpp"), com_argv[i+1]);
|
||||||
|
|
||||||
|
if (COM_CheckParm ("-current"))
|
||||||
|
Cvar_Set(Cvar_FindVar("vid_desktopsettings"), "1");
|
||||||
|
|
||||||
Cvar_ApplyLatches(CVAR_RENDERERLATCH);
|
Cvar_ApplyLatches(CVAR_RENDERERLATCH);
|
||||||
|
|
||||||
//-1 means 'never set'
|
//-1 means 'never set'
|
||||||
|
|
|
@ -884,18 +884,22 @@ void SCR_CalcRefdef (void)
|
||||||
sb_lines = 0;
|
sb_lines = 0;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
if (size >= 120)
|
|
||||||
|
if (size >= 120)
|
||||||
sb_lines = 0; // no status bar at all
|
sb_lines = 0; // no status bar at all
|
||||||
else if (size >= 110)
|
else if (size >= 110)
|
||||||
sb_lines = 24; // no inventory
|
sb_lines = 24; // no inventory
|
||||||
else
|
else
|
||||||
sb_lines = 24+16+8;
|
sb_lines = 24+16+8;
|
||||||
|
|
||||||
if (scr_viewsize.value >= 100.0 || scr_chatmode) {
|
if (scr_viewsize.value >= 100.0 || scr_chatmode)
|
||||||
|
{
|
||||||
full = true;
|
full = true;
|
||||||
size = 100.0;
|
size = 100.0;
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
size = scr_viewsize.value;
|
size = scr_viewsize.value;
|
||||||
|
|
||||||
if (cl.intermission)
|
if (cl.intermission)
|
||||||
{
|
{
|
||||||
full = true;
|
full = true;
|
||||||
|
@ -917,11 +921,14 @@ void SCR_CalcRefdef (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
r_refdef.vrect.height = vid.height * size;
|
r_refdef.vrect.height = vid.height * size;
|
||||||
if (cl_sbar.value==1 || !full) {
|
if (cl_sbar.value==1 || !full)
|
||||||
|
{
|
||||||
if (r_refdef.vrect.height > vid.height - sb_lines)
|
if (r_refdef.vrect.height > vid.height - sb_lines)
|
||||||
r_refdef.vrect.height = vid.height - sb_lines;
|
r_refdef.vrect.height = vid.height - sb_lines;
|
||||||
} else if (r_refdef.vrect.height > vid.height)
|
}
|
||||||
|
else if (r_refdef.vrect.height > vid.height)
|
||||||
r_refdef.vrect.height = vid.height;
|
r_refdef.vrect.height = vid.height;
|
||||||
|
|
||||||
r_refdef.vrect.x = (vid.width - r_refdef.vrect.width)/2;
|
r_refdef.vrect.x = (vid.width - r_refdef.vrect.width)/2;
|
||||||
if (full)
|
if (full)
|
||||||
r_refdef.vrect.y = 0;
|
r_refdef.vrect.y = 0;
|
||||||
|
|
|
@ -99,6 +99,7 @@ static cvar_t vid_width = SCVARF("vid_width", "640", CVAR_ARCHIVE|CVAR_RENDERERL
|
||||||
static cvar_t vid_height = SCVARF("vid_height", "480", CVAR_ARCHIVE|CVAR_RENDERERLATCH);
|
static cvar_t vid_height = SCVARF("vid_height", "480", CVAR_ARCHIVE|CVAR_RENDERERLATCH);
|
||||||
static cvar_t vid_refreshrate = SCVARF("vid_displayfrequency", "0", CVAR_ARCHIVE|CVAR_RENDERERLATCH);
|
static cvar_t vid_refreshrate = SCVARF("vid_displayfrequency", "0", CVAR_ARCHIVE|CVAR_RENDERERLATCH);
|
||||||
static cvar_t vid_multisample = SCVARF("vid_multisample", "0", CVAR_ARCHIVE|CVAR_RENDERERLATCH);
|
static cvar_t vid_multisample = SCVARF("vid_multisample", "0", CVAR_ARCHIVE|CVAR_RENDERERLATCH);
|
||||||
|
static cvar_t vid_desktopsettings = SCVARF("vid_desktopsettings", "0", CVAR_ARCHIVE|CVAR_RENDERERLATCH);
|
||||||
|
|
||||||
#if defined(RGLQUAKE)
|
#if defined(RGLQUAKE)
|
||||||
cvar_t gl_texturemode = SCVARFC("gl_texturemode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE|CVAR_RENDERERCALLBACK, GL_Texturemode_Callback);
|
cvar_t gl_texturemode = SCVARFC("gl_texturemode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE|CVAR_RENDERERCALLBACK, GL_Texturemode_Callback);
|
||||||
|
@ -493,6 +494,8 @@ void Renderer_Init(void)
|
||||||
Cvar_Register (&vid_height, VIDCOMMANDGROUP);
|
Cvar_Register (&vid_height, VIDCOMMANDGROUP);
|
||||||
Cvar_Register (&vid_refreshrate, VIDCOMMANDGROUP);
|
Cvar_Register (&vid_refreshrate, VIDCOMMANDGROUP);
|
||||||
|
|
||||||
|
Cvar_Register (&vid_desktopsettings, VIDCOMMANDGROUP);
|
||||||
|
|
||||||
Cvar_Register (&gl_skyboxname, GRAPHICALNICETIES);
|
Cvar_Register (&gl_skyboxname, GRAPHICALNICETIES);
|
||||||
|
|
||||||
Cvar_Register(&r_dodgytgafiles, "Bug fixes");
|
Cvar_Register(&r_dodgytgafiles, "Bug fixes");
|
||||||
|
@ -1891,6 +1894,7 @@ TRACE(("dbg: R_RestartRenderer_f\n"));
|
||||||
newr.bpp = vid_bpp.value;
|
newr.bpp = vid_bpp.value;
|
||||||
newr.fullscreen = vid_fullscreen.value;
|
newr.fullscreen = vid_fullscreen.value;
|
||||||
newr.rate = vid_refreshrate.value;
|
newr.rate = vid_refreshrate.value;
|
||||||
|
|
||||||
Q_strncpyz(newr.glrenderer, gl_driver.string, sizeof(newr.glrenderer));
|
Q_strncpyz(newr.glrenderer, gl_driver.string, sizeof(newr.glrenderer));
|
||||||
|
|
||||||
newr.renderer = -1;
|
newr.renderer = -1;
|
||||||
|
@ -1925,6 +1929,42 @@ TRACE(("dbg: R_RestartRenderer_f\n"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// use desktop settings if set to 0 and not dedicated
|
||||||
|
if (newr.renderer != QR_NONE)
|
||||||
|
{
|
||||||
|
int dbpp, dheight, dwidth, drate;
|
||||||
|
|
||||||
|
if (!Sys_GetDesktopParameters(&dwidth, &dheight, &dbpp, &drate))
|
||||||
|
{
|
||||||
|
// force default values for systems not supporting desktop parameters
|
||||||
|
dwidth = 640;
|
||||||
|
dheight = 480;
|
||||||
|
if (newr.renderer == QR_SOFTWARE) // hack for software default
|
||||||
|
dbpp = 8;
|
||||||
|
else
|
||||||
|
dbpp = 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vid_desktopsettings.value)
|
||||||
|
{
|
||||||
|
newr.width = dwidth;
|
||||||
|
newr.height = dheight;
|
||||||
|
newr.bpp = dbpp;
|
||||||
|
newr.rate = drate;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (newr.width <= 0 || newr.height <= 0)
|
||||||
|
{
|
||||||
|
newr.width = dwidth;
|
||||||
|
newr.height = dheight;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newr.bpp <= 0)
|
||||||
|
newr.bpp = dbpp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TRACE(("dbg: R_RestartRenderer_f renderer %i\n", newr.renderer));
|
TRACE(("dbg: R_RestartRenderer_f renderer %i\n", newr.renderer));
|
||||||
|
|
||||||
memcpy(&oldr, ¤trendererstate, sizeof(rendererstate_t));
|
memcpy(&oldr, ¤trendererstate, sizeof(rendererstate_t));
|
||||||
|
|
|
@ -477,8 +477,30 @@ void Sys_ServerActivity(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//FIXME: this is hacky. Unlike other OSes where the GUI is part of the OS, X is seperate
|
||||||
|
//from the OS. This will cause problems with framebuffer-only setups.
|
||||||
|
qboolean Sys_GetDesktopParameters(int *width, int *height, int *bpp, int *refreshrate)
|
||||||
|
{
|
||||||
|
Display *xtemp;
|
||||||
|
int scr;
|
||||||
|
XPixmapFormatValues xpfv;
|
||||||
|
|
||||||
|
xtemp = XOpenDisplay(NULL);
|
||||||
|
|
||||||
|
if (!xtemp)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
scr = DefaultScreen(xtemp);
|
||||||
|
|
||||||
|
*width = DisplayWidth(xtemp, scr);
|
||||||
|
*height = DisplayHeight(xtemp, scr);
|
||||||
|
*bpp = DefaultDepth(xtemp, scr);
|
||||||
|
*refreshrate = 0;
|
||||||
|
|
||||||
|
XCloseDisplay(xtemp);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
#define SYS_CLIPBOARD_SIZE 256
|
#define SYS_CLIPBOARD_SIZE 256
|
||||||
static char clipboard_buffer[SYS_CLIPBOARD_SIZE] = {0};
|
static char clipboard_buffer[SYS_CLIPBOARD_SIZE] = {0};
|
||||||
|
|
|
@ -274,6 +274,11 @@ void Sys_ServerActivity(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qboolean Sys_GetDesktopParameters(int *width, int *height, int *bpp, int *refreshrate)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* x86 crap */
|
/* x86 crap */
|
||||||
void Sys_HighFPPrecision (void)
|
void Sys_HighFPPrecision (void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -299,6 +299,11 @@ int main(int argc, char **argv)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qboolean Sys_GetDesktopParameters(int *width, int *height, int *bpp, int *refreshrate)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void Sys_HighFPPrecision(void)
|
void Sys_HighFPPrecision(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -1256,8 +1256,27 @@ int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLin
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qboolean Sys_GetDesktopParameters(int *width, int *height, int *bpp, int *refreshrate)
|
||||||
|
{
|
||||||
|
HDC hdc;
|
||||||
|
int rate;
|
||||||
|
|
||||||
|
hdc = GetDC(NULL);
|
||||||
|
|
||||||
|
*width = GetDeviceCaps(hdc, HORZRES);
|
||||||
|
*height = GetDeviceCaps(hdc, VERTRES);
|
||||||
|
*bpp = GetDeviceCaps(hdc, BITSPIXEL);
|
||||||
|
rate = GetDeviceCaps(hdc, VREFRESH);
|
||||||
|
|
||||||
|
if (rate == 1)
|
||||||
|
rate = 0;
|
||||||
|
|
||||||
|
*refreshrate = rate;
|
||||||
|
|
||||||
|
ReleaseDC(NULL, hdc);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef NOASM //these couldn't be found... (it is a masm thing, right?)
|
#ifdef NOASM //these couldn't be found... (it is a masm thing, right?)
|
||||||
|
|
|
@ -85,6 +85,8 @@ void VARGS Sys_SetFPCW (void);
|
||||||
|
|
||||||
int Sys_EnumerateFiles (char *gpath, char *match, int (*func)(char *, int, void *), void *parm);
|
int Sys_EnumerateFiles (char *gpath, char *match, int (*func)(char *, int, void *), void *parm);
|
||||||
|
|
||||||
|
qboolean Sys_GetDesktopParameters(int *width, int *height, int *bpp, int *refreshrate);
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
int StartLocalServer(int close);
|
int StartLocalServer(int close);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -658,7 +658,7 @@ void GL_Texturemode_Callback (struct cvar_s *var, char *oldvalue)
|
||||||
if (!Q_strcasecmp (modes[i].altname, var->string ) )
|
if (!Q_strcasecmp (modes[i].altname, var->string ) )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == 6)
|
if (i == sizeof(modes)/sizeof(modes[0]))
|
||||||
{
|
{
|
||||||
Con_Printf ("bad gl_texturemode name\n");
|
Con_Printf ("bad gl_texturemode name\n");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -754,7 +754,8 @@ qboolean GLVID_Init (rendererstate_t *info, unsigned char *palette)
|
||||||
vid_dpy = XOpenDisplay(NULL);
|
vid_dpy = XOpenDisplay(NULL);
|
||||||
if (!vid_dpy)
|
if (!vid_dpy)
|
||||||
{
|
{
|
||||||
Sys_Error("Error couldn't open the X display\n");
|
Con_Printf(S_ERROR "Error: couldn't open the X display\n");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
scrnum = DefaultScreen(vid_dpy);
|
scrnum = DefaultScreen(vid_dpy);
|
||||||
|
@ -857,7 +858,7 @@ qboolean GLVID_Init (rendererstate_t *info, unsigned char *palette)
|
||||||
XF86VidModeSetViewPort(vid_dpy, scrnum, 0, 0);
|
XF86VidModeSetViewPort(vid_dpy, scrnum, 0, 0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
XStoreName(vid_dpy, vid_window, "GLX QuakeWorld Cient");
|
XStoreName(vid_dpy, vid_window, "FTE QuakeWorld");
|
||||||
|
|
||||||
//hide the cursor.
|
//hide the cursor.
|
||||||
XDefineCursor(vid_dpy, vid_window, CreateNullCursor(vid_dpy, vid_window));
|
XDefineCursor(vid_dpy, vid_window, CreateNullCursor(vid_dpy, vid_window));
|
||||||
|
|
Loading…
Reference in a new issue