Add detection and setting resolution as in desktop
Partially the code is ported from Sauerbraten. Commit changes also menu items in Display resolutions menu. DOCREF setdesktopres
This commit is contained in:
+18
-15
@@ -49,8 +49,9 @@ menuitem [Police] [ skin_rvsf 5 ] [ chmenumdl RVSF playermodels/RVSF/06 all 50 4
|
||||
newmenu [QUICK setup]
|
||||
|
||||
menuitemtextinput [Nickname:] [] [ name $arg1 ]
|
||||
menuitemtextinput [Resolution (Width): ] "$scr_w" [ scr_w $arg1 ]
|
||||
menuitemtextinput [Resolution (Height): ] "$scr_h" [ scr_h $arg1 ]
|
||||
menuitemtextinput [Resolution (width): ] "$scr_w" [ scr_w $arg1 ]
|
||||
menuitemtextinput [Resolution (height): ] "$scr_h" [ scr_h $arg1 ]
|
||||
menuitem "\f2Set\f5 resolution as in desktop" [ setdesktopres; refreshcurmenudelayed ]
|
||||
menuitemcheckbox [Fullscreen: ] "$fullscreen" [ fullscreen $arg1 ]
|
||||
menuitemtextinput [Mouse sensitivity: ] "$sensitivity" [ sensitivity $arg1 ]
|
||||
menuitemcheckbox [Reduced violence mode: ] "$poniesmodeon" [ reducedviolencemode $arg1 ]
|
||||
@@ -322,7 +323,8 @@ newmenu video
|
||||
|
||||
menuitemtextinput [Screen width: ] "$scr_w" [ scr_w $arg1 ] [] 11
|
||||
menuitemtextinput [Screen height: ] "$scr_h" [ scr_h $arg1 ] [] 11
|
||||
menuitem [Choose resolution from list...] [ showmenu [Display resolutions] ]
|
||||
menuitem "\f2Set\f5 resolution as in desktop" [ setdesktopres; refreshcurmenudelayed ]
|
||||
menuitem [Choose resolution from list...] [ showmenu [Display resolutions] ]
|
||||
menuitem [] -1
|
||||
menuitemslider [Graphics detail: ] 1 6 "$gfxqualityalias" 1 [Horrible Low Medium Good High "INSANE! (May perform slowly on older gfx)"] [ new_gfx_quality $arg1 ]
|
||||
menuitem [] -1
|
||||
@@ -340,18 +342,19 @@ menuitem "\f2\t\t\t [ Apply now! ]" [ resetgl ]
|
||||
|
||||
newmenu [Display resolutions]
|
||||
|
||||
menuitem [800x600 (4:3)] [ scr_w 800; scr_h 600; closecurmenu; showmenu video ]
|
||||
menuitem [1024x768 (4:3)] [ scr_w 1024; scr_h 768; closecurmenu; showmenu video ]
|
||||
menuitem [1280x720 (16:9)] [ scr_w 1280; scr_h 720; closecurmenu; showmenu video ]
|
||||
menuitem [1280x800 (16:10)] [ scr_w 1280; scr_h 800; closecurmenu; showmenu video ]
|
||||
menuitem [1280x1024 (5:4)] [ scr_w 1280; scr_h 1024; closecurmenu; showmenu video ]
|
||||
menuitem [1360x768 (~16:9)] [ scr_w 1360; scr_h 768; closecurmenu; showmenu video ]
|
||||
menuitem [1366x768 (~16:9)] [ scr_w 1366; scr_h 768; closecurmenu; showmenu video ]
|
||||
menuitem [1440x900 (16:10)] [ scr_w 1440; scr_h 900; closecurmenu; showmenu video ]
|
||||
menuitem [1600x900 (16:9)] [ scr_w 1600; scr_h 900; closecurmenu; showmenu video ]
|
||||
menuitem [1680x1050 (16:10)] [ scr_w 1680; scr_h 1050; closecurmenu; showmenu video ]
|
||||
menuitem [1920x1080 (16:9)] [ scr_w 1920; scr_h 1080; closecurmenu; showmenu video ]
|
||||
menuitem [1920x1200 (16:10)] [ scr_w 1920; scr_h 1200; closecurmenu; showmenu video ]
|
||||
menuitem " 640x480\t(4:3)" [ scr_w 640; scr_h 480; closecurmenu ]
|
||||
menuitem " 800x600\t(4:3)" [ scr_w 800; scr_h 600; closecurmenu ]
|
||||
menuitem "1024x768\t(4:3)" [ scr_w 1024; scr_h 768; closecurmenu ]
|
||||
menuitem "1280x720\t(16:9)" [ scr_w 1280; scr_h 720; closecurmenu ]
|
||||
menuitem "1280x800\t(16:10)" [ scr_w 1280; scr_h 800; closecurmenu ]
|
||||
menuitem "1280x1024\t(5:4)" [ scr_w 1280; scr_h 1024; closecurmenu ]
|
||||
menuitem "1360x768\t(~16:9)" [ scr_w 1360; scr_h 768; closecurmenu ]
|
||||
menuitem "1366x768\t(~16:9)" [ scr_w 1366; scr_h 768; closecurmenu ]
|
||||
menuitem "1440x900\t(16:10)" [ scr_w 1440; scr_h 900; closecurmenu ]
|
||||
menuitem "1600x900\t(16:9)" [ scr_w 1600; scr_h 900; closecurmenu ]
|
||||
menuitem "1680x1050\t(16:10)" [ scr_w 1680; scr_h 1050; closecurmenu ]
|
||||
menuitem "1920x1080\t(16:9)" [ scr_w 1920; scr_h 1080; closecurmenu ]
|
||||
menuitem "1920x1200\t(16:10)" [ scr_w 1920; scr_h 1200; closecurmenu ]
|
||||
|
||||
const fsaa_valuemap [-1 0 2 4 8 16]
|
||||
const aniso_valuemap [0 2 4 8 16]
|
||||
|
||||
@@ -414,6 +414,20 @@ void setresdata(char *s, enet_uint32 c)
|
||||
|
||||
COMMANDF(screenres, "ii", (int *w, int *h) { screenres(*w, *h); });
|
||||
|
||||
int desktopw = 0, desktoph = 0;
|
||||
|
||||
void setdesktopres()
|
||||
{
|
||||
if(desktopw && desktoph)
|
||||
{
|
||||
scr_w = desktopw;
|
||||
scr_h = desktoph;
|
||||
}
|
||||
else conoutf("Could not set resolution as in desktop");
|
||||
}
|
||||
|
||||
COMMAND(setdesktopres, "");
|
||||
|
||||
static int curgamma = 100;
|
||||
VARNFP(gamma, vgamma, 30, 100, 300,
|
||||
{
|
||||
@@ -1103,6 +1117,12 @@ int main(int argc, char **argv)
|
||||
if(SDL_InitSubSystem(SDL_INIT_VIDEO)<0) fatal("Unable to initialize SDL Video");
|
||||
|
||||
initlog("video: mode");
|
||||
const SDL_VideoInfo *video = SDL_GetVideoInfo();
|
||||
if(video)
|
||||
{
|
||||
desktopw = video->current_w;
|
||||
desktoph = video->current_h;
|
||||
}
|
||||
int usedcolorbits = 0, useddepthbits = 0, usedfsaa = 0;
|
||||
setupscreen(usedcolorbits, useddepthbits, usedfsaa);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user