Videomenu: Minor optimization to GetCustomValue for subsequent calls

This commit is contained in:
svdijk 2015-11-16 22:23:15 +01:00
parent 8d7f4a74e6
commit 8a9741dd89
1 changed files with 20 additions and 14 deletions

View File

@ -58,16 +58,22 @@ static menuaction_s s_defaults_action;
static menuaction_s s_apply_action;
static int
GetCustomValue(menulist_s list)
GetCustomValue(menulist_s *list)
{
int i = list.curvalue;
static menulist_s *last;
static int i;
do
if (list != last)
{
i++;
last = list;
i = list->curvalue;
do
{
i++;
}
while (list->itemnames[i]);
i--;
}
while (list.itemnames[i]);
i--;
return i;
}
@ -116,7 +122,7 @@ ApplyChanges(void *unused)
qboolean restart = false;
/* custom mode */
if (s_mode_list.curvalue != GetCustomValue(s_mode_list))
if (s_mode_list.curvalue != GetCustomValue(&s_mode_list))
{
/* Restarts automatically */
Cvar_SetValue("gl_mode", s_mode_list.curvalue);
@ -182,12 +188,12 @@ ApplyChanges(void *unused)
{
Cvar_SetValue("gl_hudscale", -1);
}
else if (s_uiscale_list.curvalue < GetCustomValue(s_uiscale_list))
else if (s_uiscale_list.curvalue < GetCustomValue(&s_uiscale_list))
{
Cvar_SetValue("gl_hudscale", s_uiscale_list.curvalue);
}
if (s_uiscale_list.curvalue != GetCustomValue(s_uiscale_list))
if (s_uiscale_list.curvalue != GetCustomValue(&s_uiscale_list))
{
Cvar_SetValue("gl_consolescale", gl_hudscale->value);
Cvar_SetValue("gl_menuscale", gl_hudscale->value);
@ -372,7 +378,7 @@ VID_MenuInit(void)
}
else
{
s_mode_list.curvalue = GetCustomValue(s_mode_list);
s_mode_list.curvalue = GetCustomValue(&s_mode_list);
}
s_aspect_list.generic.type = MTYPE_SPINCONTROL;
@ -402,7 +408,7 @@ VID_MenuInit(void)
}
else
{
s_aspect_list.curvalue = GetCustomValue(s_aspect_list);
s_aspect_list.curvalue = GetCustomValue(&s_aspect_list);
}
s_uiscale_list.generic.type = MTYPE_SPINCONTROL;
@ -414,21 +420,21 @@ VID_MenuInit(void)
gl_hudscale->value != gl_menuscale->value ||
gl_hudscale->value != crosshair_scale->value)
{
s_uiscale_list.curvalue = GetCustomValue(s_uiscale_list);
s_uiscale_list.curvalue = GetCustomValue(&s_uiscale_list);
}
else if (gl_hudscale->value < 0)
{
s_uiscale_list.curvalue = 0;
}
else if (gl_hudscale->value > 0 &&
gl_hudscale->value < GetCustomValue(s_uiscale_list) &&
gl_hudscale->value < GetCustomValue(&s_uiscale_list) &&
gl_hudscale->value == (int)gl_hudscale->value)
{
s_uiscale_list.curvalue = gl_hudscale->value;
}
else
{
s_uiscale_list.curvalue = GetCustomValue(s_uiscale_list);
s_uiscale_list.curvalue = GetCustomValue(&s_uiscale_list);
}
s_screensize_slider.generic.type = MTYPE_SLIDER;