- Fixed: You couldn't easily play with the compatibility options menu during

the title screen, because the demo loop reset the server cvars after each
  attempt to play a demo, even though the demos never actually played. The
  proper long-term solution would be to make shadow copies of all cvars
  touched by demos and use those for the demo and the real things for
  everything else, but this should do for now and is a lot easier.


SVN r1463 (trunk)
This commit is contained in:
Randy Heit 2009-03-04 23:19:46 +00:00
parent e9121b607d
commit ee1806e9b2
4 changed files with 20 additions and 2 deletions

View File

@ -1,4 +1,10 @@
March 4, 2009 March 4, 2009
- Fixed: You couldn't easily play with the compatibility options menu during
the title screen, because the demo loop reset the server cvars after each
attempt to play a demo, even though the demos never actually played. The
proper long-term solution would be to make shadow copies of all cvars
touched by demos and use those for the demo and the real things for
everything else, but this should do for now and is a lot easier.
- Fixed: When using BOOM-style sector flags and specials together, the - Fixed: When using BOOM-style sector flags and specials together, the
special was ignored unless it was "secret". special was ignored unless it was "secret".
- Fixed: One byte is too short for DUMB_IT_SIGRENDERER to store song tempo. - Fixed: One byte is too short for DUMB_IT_SIGRENDERER to store song tempo.

View File

@ -1299,6 +1299,17 @@ void C_RestoreCVars (void)
for (i = numbackedup; i; i--, backup++) for (i = numbackedup; i; i--, backup++)
{ {
cvar_set (backup->name, backup->string); cvar_set (backup->name, backup->string);
}
C_ForgetCVars();
}
void C_ForgetCVars (void)
{
struct backup_s *backup = CVarBackups;
int i;
for (i = numbackedup; i; i--, backup++)
{
delete[] backup->name; delete[] backup->name;
delete[] backup->string; delete[] backup->string;
backup->name = backup->string = NULL; backup->name = backup->string = NULL;

View File

@ -387,6 +387,8 @@ inline FBaseCVar *cvar_forceset (const char *var_name, const BYTE *value) { retu
// that might possibly have been changed during the course of demo playback. // that might possibly have been changed during the course of demo playback.
void C_RestoreCVars (void); void C_RestoreCVars (void);
void C_ForgetCVars (void);
#define CUSTOM_CVAR(type,name,def,flags) \ #define CUSTOM_CVAR(type,name,def,flags) \
static void cvarfunc_##name(F##type##CVar &); \ static void cvarfunc_##name(F##type##CVar &); \

View File

@ -2400,7 +2400,7 @@ void G_DoPlayDemo (void)
{ {
const char *eek = "Cannot play non-ZDoom demos.\n(They would go out of sync badly.)\n"; const char *eek = "Cannot play non-ZDoom demos.\n(They would go out of sync badly.)\n";
C_RestoreCVars(); C_ForgetCVars();
M_Free(demobuffer); M_Free(demobuffer);
demo_p = demobuffer = NULL; demo_p = demobuffer = NULL;
if (singledemo) if (singledemo)
@ -2421,7 +2421,6 @@ void G_DoPlayDemo (void)
} }
else else
{ {
// don't spend a lot of time in loadlevel // don't spend a lot of time in loadlevel
precache = false; precache = false;
demonew = true; demonew = true;