X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fslider_resolution.c;h=d404e809918092c01858689f256dc68eed8d40aa;hp=8bd47e799983abe4207446224c390a6441e4d1bc;hb=def24368510d38164b0f6756a1cd5e3bb82f67a8;hpb=87d4a81433ca7dbd761782f9b4b235976c7cdae5 diff --git a/qcsrc/menu/xonotic/slider_resolution.c b/qcsrc/menu/xonotic/slider_resolution.c index 8bd47e799..d404e8099 100644 --- a/qcsrc/menu/xonotic/slider_resolution.c +++ b/qcsrc/menu/xonotic/slider_resolution.c @@ -6,25 +6,25 @@ CLASS(XonoticResolutionSlider) EXTENDS(XonoticTextSlider) METHOD(XonoticResolutionSlider, saveCvars, void(entity)) ENDCLASS(XonoticResolutionSlider) entity makeXonoticResolutionSlider(); -void initConwidths(); -void updateConwidths(); +void updateConwidths(float width, float height, float pixelheight); #endif #ifdef IMPLEMENTATION -void initConwidths() -{ - cvar_set("_menu_vid_width", cvar_string("vid_width")); - cvar_set("_menu_vid_height", cvar_string("vid_height")); - cvar_set("_menu_vid_pixelheight", cvar_string("vid_pixelheight")); -} -void updateConwidths() +// Updates cvars (to be called by menu.qc at startup or on detected res change) +void updateConwidths(float width, float height, float pixelheight) { vector r, c; float minfactor, maxfactor; float sz, f; - r_x = cvar("_menu_vid_width"); - r_y = cvar("_menu_vid_height"); - r_z = cvar("_menu_vid_pixelheight"); + + // Save off current settings. + cvar_set("_menu_vid_width", ftos(width)); + cvar_set("_menu_vid_height", ftos(height)); + cvar_set("_menu_vid_pixelheight", ftos(pixelheight)); + + r_x = width; + r_y = height; + r_z = pixelheight; sz = cvar("menu_vid_scale"); // calculate the base resolution @@ -54,9 +54,6 @@ void updateConwidths() f = 1; c = c * f; // fteqcc fail - cvar_set("vid_width", ftos(rint(r_x))); - cvar_set("vid_height", ftos(rint(r_y))); - cvar_set("vid_pixelheight", ftos(rint(r_z))); cvar_set("vid_conwidth", ftos(rint(c_x))); cvar_set("vid_conheight", ftos(rint(c_y))); } @@ -72,6 +69,7 @@ void XonoticResolutionSlider_addResolution(entity me, float w, float h, float pi me.addValue(me, strzone(sprintf(_("%dx%d"), w, h)), strzone(strcat(ftos(w), " ", ftos(h), " ", ftos(pixelheight)))); // FIXME (in case you ever want to dynamically instantiate this): THIS IS NEVER FREED } +float autocvar_menu_vid_allowdualscreenresolution; void XonoticResolutionSlider_configureXonoticResolutionSlider(entity me) { float i; @@ -93,7 +91,9 @@ void XonoticResolutionSlider_configureXonoticResolutionSlider(entity me) if(r_x < 640 || r_y < 480) continue; if(r_x > 2 * r_y) // likely dualscreen resolution, skip this one - continue; + if(autocvar_menu_vid_allowdualscreenresolution <= 0) + continue; + me.addResolution(me, r_x, r_y, r_z); }