mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2025-03-13 06:13:39 +00:00
gl_vidsdl.c: make VID_Init independent from modelist
git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@817 af15c1b1-3010-417e-b628-4374ebc0bcbd
This commit is contained in:
parent
fed26aabf1
commit
593b72da23
1 changed files with 44 additions and 119 deletions
|
@ -65,7 +65,6 @@ static SDL_Surface *draw_context;
|
||||||
static qboolean vid_locked = false; //johnfitz
|
static qboolean vid_locked = false; //johnfitz
|
||||||
static qboolean vid_changed = false;
|
static qboolean vid_changed = false;
|
||||||
|
|
||||||
static int vid_default = MS_WINDOWED;
|
|
||||||
static qboolean fullsbardraw = false;
|
static qboolean fullsbardraw = false;
|
||||||
|
|
||||||
static void VID_Menu_Init (void); //johnfitz
|
static void VID_Menu_Init (void); //johnfitz
|
||||||
|
@ -931,10 +930,9 @@ VID_Init
|
||||||
void VID_Init (void)
|
void VID_Init (void)
|
||||||
{
|
{
|
||||||
static char vid_center[] = "SDL_VIDEO_CENTERED=center";
|
static char vid_center[] = "SDL_VIDEO_CENTERED=center";
|
||||||
const SDL_VideoInfo *info;
|
const SDL_VideoInfo *info = SDL_GetVideoInfo();
|
||||||
int i, existingmode;
|
|
||||||
int width, height, bpp;
|
int width, height, bpp;
|
||||||
int p;
|
qboolean fullscreen;
|
||||||
const char *read_vars[] = { "vid_fullscreen",
|
const char *read_vars[] = { "vid_fullscreen",
|
||||||
"vid_width",
|
"vid_width",
|
||||||
"vid_height",
|
"vid_height",
|
||||||
|
@ -952,7 +950,6 @@ void VID_Init (void)
|
||||||
Cvar_SetCallback (&vid_height, VID_Changed_f);
|
Cvar_SetCallback (&vid_height, VID_Changed_f);
|
||||||
Cvar_SetCallback (&vid_bpp, VID_Changed_f);
|
Cvar_SetCallback (&vid_bpp, VID_Changed_f);
|
||||||
Cvar_SetCallback (&vid_vsync, VID_Changed_f);
|
Cvar_SetCallback (&vid_vsync, VID_Changed_f);
|
||||||
// Cvar_RegisterVariable (&vid_refreshrate); //johnfitz
|
|
||||||
|
|
||||||
Cmd_AddCommand ("vid_unlock", VID_Unlock); //johnfitz
|
Cmd_AddCommand ("vid_unlock", VID_Unlock); //johnfitz
|
||||||
Cmd_AddCommand ("vid_restart", VID_Restart); //johnfitz
|
Cmd_AddCommand ("vid_restart", VID_Restart); //johnfitz
|
||||||
|
@ -975,36 +972,22 @@ void VID_Init (void)
|
||||||
VID_InitDIB();
|
VID_InitDIB();
|
||||||
VID_InitFullDIB();
|
VID_InitFullDIB();
|
||||||
|
|
||||||
if (COM_CheckParm("-window") || COM_CheckParm("-w"))
|
width = (int)vid_width.value;
|
||||||
{
|
height = (int)vid_height.value;
|
||||||
Cvar_SetQuick (&vid_fullscreen, "0");
|
bpp = (int)vid_bpp.value;
|
||||||
}
|
fullscreen = (int)vid_fullscreen.value;
|
||||||
else if (COM_CheckParm("-fullscreen") || COM_CheckParm("-f"))
|
|
||||||
{
|
|
||||||
Cvar_SetQuick (&vid_fullscreen, "1");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!vid_fullscreen.value)
|
|
||||||
{
|
|
||||||
vid_default = MS_WINDOWED;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
vid_default = MS_UNINIT;
|
|
||||||
|
|
||||||
width = vid_width.value;
|
|
||||||
height = vid_height.value;
|
|
||||||
bpp = vid_bpp.value;
|
|
||||||
|
|
||||||
if (COM_CheckParm("-current"))
|
if (COM_CheckParm("-current"))
|
||||||
{
|
{
|
||||||
info = SDL_GetVideoInfo();
|
|
||||||
width = info->current_w;
|
width = info->current_w;
|
||||||
height = info->current_h;
|
height = info->current_h;
|
||||||
bpp = info->vfmt->BitsPerPixel;
|
bpp = info->vfmt->BitsPerPixel;
|
||||||
|
fullscreen = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
int p;
|
||||||
|
|
||||||
p = COM_CheckParm("-width");
|
p = COM_CheckParm("-width");
|
||||||
if (p && p < com_argc-1)
|
if (p && p < com_argc-1)
|
||||||
{
|
{
|
||||||
|
@ -1026,82 +1009,27 @@ void VID_Init (void)
|
||||||
p = COM_CheckParm("-bpp");
|
p = COM_CheckParm("-bpp");
|
||||||
if (p && p < com_argc-1)
|
if (p && p < com_argc-1)
|
||||||
bpp = Q_atoi(com_argv[p+1]);
|
bpp = Q_atoi(com_argv[p+1]);
|
||||||
|
|
||||||
|
if (COM_CheckParm("-window") || COM_CheckParm("-w"))
|
||||||
|
fullscreen = false;
|
||||||
|
else if (COM_CheckParm("-fullscreen") || COM_CheckParm("-f"))
|
||||||
|
fullscreen = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if they want to force it, add the specified mode to the list
|
if (!VID_ValidMode(width, height, bpp, fullscreen))
|
||||||
if (COM_CheckParm("-force") && (nummodes < MAX_MODE_LIST))
|
|
||||||
{
|
{
|
||||||
modelist[nummodes].type = MS_FULLSCREEN;
|
width = (int)vid_width.value;
|
||||||
modelist[nummodes].width = width;
|
height = (int)vid_height.value;
|
||||||
modelist[nummodes].height = height;
|
bpp = (int)vid_bpp.value;
|
||||||
modelist[nummodes].fullscreen = 1;
|
fullscreen = (int)vid_fullscreen.value;
|
||||||
modelist[nummodes].bpp = bpp;
|
|
||||||
|
|
||||||
for (i=nummodes, existingmode = 0 ; i<nummodes ; i++)
|
|
||||||
{
|
|
||||||
if ((modelist[nummodes].width == modelist[i].width) &&
|
|
||||||
(modelist[nummodes].height == modelist[i].height) &&
|
|
||||||
(modelist[nummodes].bpp == modelist[i].bpp))
|
|
||||||
{
|
|
||||||
existingmode = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!existingmode)
|
if (!VID_ValidMode(width, height, bpp, fullscreen))
|
||||||
{
|
{
|
||||||
nummodes++;
|
width = 640;
|
||||||
}
|
height = 480;
|
||||||
}
|
bpp = info->vfmt->BitsPerPixel;
|
||||||
|
fullscreen = false;
|
||||||
// Try to find a mode with matching width, height and bpp
|
|
||||||
if (vid_default == MS_UNINIT)
|
|
||||||
{
|
|
||||||
for (i = 1; i < nummodes; i++)
|
|
||||||
{
|
|
||||||
if ((modelist[i].width == width) &&
|
|
||||||
(modelist[i].height == height) &&
|
|
||||||
(modelist[i].bpp == bpp))
|
|
||||||
{
|
|
||||||
vid_default = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to find a mode with matching width and height
|
|
||||||
if (vid_default == MS_UNINIT)
|
|
||||||
{
|
|
||||||
for (i = 1; i < nummodes; i++)
|
|
||||||
{
|
|
||||||
if ((modelist[i].width == width) &&
|
|
||||||
(modelist[i].height == height))
|
|
||||||
{
|
|
||||||
vid_default = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to find a mode with matching width
|
|
||||||
if (vid_default == MS_UNINIT)
|
|
||||||
{
|
|
||||||
for (i = 1; i < nummodes; i++)
|
|
||||||
{
|
|
||||||
if (modelist[i].width == width)
|
|
||||||
{
|
|
||||||
vid_default = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Still no luck? Default to windowed mode
|
|
||||||
if (vid_default == MS_UNINIT)
|
|
||||||
{
|
|
||||||
Cvar_SetQuick (&vid_fullscreen, "0");
|
|
||||||
vid_default = MS_WINDOWED;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vid_initialized = true;
|
vid_initialized = true;
|
||||||
|
@ -1114,10 +1042,7 @@ void VID_Init (void)
|
||||||
// set window icon
|
// set window icon
|
||||||
PL_SetWindowIcon();
|
PL_SetWindowIcon();
|
||||||
|
|
||||||
VID_SetMode (modelist[vid_default].width,
|
VID_SetMode (width, height, bpp, fullscreen);
|
||||||
modelist[vid_default].height,
|
|
||||||
modelist[vid_default].bpp,
|
|
||||||
modelist[vid_default].type == MS_FULLSCREEN);
|
|
||||||
|
|
||||||
GL_Init ();
|
GL_Init ();
|
||||||
GL_SetupState ();
|
GL_SetupState ();
|
||||||
|
|
Loading…
Reference in a new issue