From 1b8bbdaf76d99a3dfa7f94317322989c7c15a649 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 3 Oct 2021 22:26:25 +0100 Subject: [PATCH] Add chicken bit for CheckCaches call after DoCommandP --- src/command.cpp | 10 ++++++++++ src/debug_settings.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/command.cpp b/src/command.cpp index e05765602c..f4a8e3555a 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -30,6 +30,8 @@ #include "core/random_func.hpp" #include "settings_func.h" #include "signal_func.h" +#include "debug_settings.h" +#include "debug_desync.h" #include #include "table/strings.h" @@ -889,6 +891,10 @@ bool DoCommandPEx(TileIndex tile, uint32 p1, uint32 p2, uint64 p3, uint32 cmd, C if (!random_state.Check()) log_flags |= CLEF_RANDOM; 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); + } + if (res.Failed()) { /* Only show the error when it's for us. */ StringID error_part1 = GB(cmd, 16, 16); @@ -929,6 +935,10 @@ CommandCost DoCommandPScript(TileIndex tile, uint32 p1, uint32 p2, uint64 p3, ui if (!random_state.Check()) log_flags |= CLEF_RANDOM; 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); + } + return res; } diff --git a/src/debug_settings.h b/src/debug_settings.h index cc031e2756..63b9350a09 100644 --- a/src/debug_settings.h +++ b/src/debug_settings.h @@ -17,6 +17,7 @@ enum ChickenBitFlags { DCBF_VEH_TICK_CACHE = 0, DCBF_MP_NO_STATE_CSUM_CHECK = 1, DCBF_DESYNC_CHECK_PERIODIC = 2, + DCBF_DESYNC_CHECK_POST_COMMAND = 3, }; inline bool HasChickenBit(ChickenBitFlags flag)