From c4408d8536cf58a77a02409ee612694c240caaa0 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Tue, 12 Apr 2022 00:31:31 +0200 Subject: [PATCH] - added a bit of hackery so that compatmode CVAR can be set up on startup --- src/common/console/c_cvars.cpp | 5 ++--- src/common/console/c_cvars.h | 7 +++++-- src/d_main.cpp | 4 +++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/common/console/c_cvars.cpp b/src/common/console/c_cvars.cpp index c9b859f2d..db9008a95 100644 --- a/src/common/console/c_cvars.cpp +++ b/src/common/console/c_cvars.cpp @@ -55,9 +55,6 @@ struct FLatchedValue static TArray LatchedValues; -bool FBaseCVar::m_DoNoSet = false; -bool FBaseCVar::m_UseCallback = false; - FBaseCVar *CVars = NULL; int cvar_defflags; @@ -523,6 +520,7 @@ void FBaseCVar::EnableNoSet () void FBaseCVar::EnableCallbacks () { + m_inEnable = true; m_UseCallback = true; FBaseCVar *cvar = CVars; @@ -534,6 +532,7 @@ void FBaseCVar::EnableCallbacks () } cvar = cvar->m_Next; } + m_inEnable = false; } void FBaseCVar::DisableCallbacks () diff --git a/src/common/console/c_cvars.h b/src/common/console/c_cvars.h index 38462b077..1fed5261a 100644 --- a/src/common/console/c_cvars.h +++ b/src/common/console/c_cvars.h @@ -210,14 +210,17 @@ protected: uint32_t Flags; bool inCallback = false; +public: + static inline bool m_inEnable = false; + private: FBaseCVar (const FBaseCVar &var) = delete; FBaseCVar (const char *name, uint32_t flags); void (*m_Callback)(FBaseCVar &); FBaseCVar *m_Next; - static bool m_UseCallback; - static bool m_DoNoSet; + static inline bool m_UseCallback = false; + static inline bool m_DoNoSet = false; void *m_ExtraDataPointer; diff --git a/src/d_main.cpp b/src/d_main.cpp index 38ab1898c..e328a4c8b 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -569,6 +569,7 @@ EXTERN_CVAR(Int, compatmode) CUSTOM_CVAR (Int, compatflags, 0, CVAR_ARCHIVE|CVAR_SERVERINFO | CVAR_NOINITCALL) { + if (FBaseCVar::m_inEnable) return; for (auto Level : AllLevels()) { Level->ApplyCompatibility(); @@ -577,6 +578,7 @@ CUSTOM_CVAR (Int, compatflags, 0, CVAR_ARCHIVE|CVAR_SERVERINFO | CVAR_NOINITCALL CUSTOM_CVAR (Int, compatflags2, 0, CVAR_ARCHIVE|CVAR_SERVERINFO | CVAR_NOINITCALL) { + if (FBaseCVar::m_inEnable) return; for (auto Level : AllLevels()) { Level->ApplyCompatibility2(); @@ -584,7 +586,7 @@ CUSTOM_CVAR (Int, compatflags2, 0, CVAR_ARCHIVE|CVAR_SERVERINFO | CVAR_NOINITCAL } } -CUSTOM_CVAR(Int, compatmode, 0, CVAR_ARCHIVE|CVAR_NOINITCALL) +CUSTOM_CVAR(Int, compatmode, 0, CVAR_ARCHIVE) { int v, w = 0;