diff --git a/src/command.cpp b/src/command.cpp index f4a8e3555a..b63b416141 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -892,7 +892,9 @@ bool DoCommandPEx(TileIndex tile, uint32 p1, uint32 p2, uint64 p3, uint32 cmd, C AppendCommandLogEntry(res, tile, p1, p2, p3, cmd, log_flags); if (unlikely(HasChickenBit(DCBF_DESYNC_CHECK_POST_COMMAND)) && !(GetCommandFlags(cmd) & CMD_LOG_AUX)) { - CheckCaches(true, nullptr, CHECK_CACHE_INFRA_TOTALS); + CheckCachesFlags flags = CHECK_CACHE_ALL | CHECK_CACHE_EMIT_LOG; + if (HasChickenBit(DCBF_DESYNC_CHECK_NO_GENERAL)) flags &= ~CHECK_CACHE_GENERAL; + CheckCaches(true, nullptr, flags); } if (res.Failed()) { @@ -936,7 +938,9 @@ CommandCost DoCommandPScript(TileIndex tile, uint32 p1, uint32 p2, uint64 p3, ui AppendCommandLogEntry(res, tile, p1, p2, p3, cmd, log_flags); if (unlikely(HasChickenBit(DCBF_DESYNC_CHECK_POST_COMMAND)) && !(GetCommandFlags(cmd) & CMD_LOG_AUX)) { - CheckCaches(true, nullptr, CHECK_CACHE_INFRA_TOTALS); + CheckCachesFlags flags = CHECK_CACHE_ALL | CHECK_CACHE_EMIT_LOG; + if (HasChickenBit(DCBF_DESYNC_CHECK_NO_GENERAL)) flags &= ~CHECK_CACHE_GENERAL; + CheckCaches(true, nullptr, flags); } return res; diff --git a/src/debug_settings.h b/src/debug_settings.h index 63b9350a09..9d770a6f11 100644 --- a/src/debug_settings.h +++ b/src/debug_settings.h @@ -18,6 +18,7 @@ enum ChickenBitFlags { DCBF_MP_NO_STATE_CSUM_CHECK = 1, DCBF_DESYNC_CHECK_PERIODIC = 2, DCBF_DESYNC_CHECK_POST_COMMAND = 3, + DCBF_DESYNC_CHECK_NO_GENERAL = 4, }; inline bool HasChickenBit(ChickenBitFlags flag) diff --git a/src/openttd.cpp b/src/openttd.cpp index c8739b5fde..a61fe0bc8b 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -1364,7 +1364,10 @@ void CheckCaches(bool force_check, std::function log, CheckC if (!force_check) { int desync_level = _debug_desync_level; - if (unlikely(HasChickenBit(DCBF_DESYNC_CHECK_PERIODIC)) && desync_level < 1) desync_level = 1; + if (unlikely(HasChickenBit(DCBF_DESYNC_CHECK_PERIODIC)) && desync_level < 1) { + desync_level = 1; + if (HasChickenBit(DCBF_DESYNC_CHECK_NO_GENERAL)) flags &= ~CHECK_CACHE_GENERAL; + } /* Return here so it is easy to add checks that are run * always to aid testing of caches. */